您的位置:首页 > 产品设计 > UI/UE

编程语言bLue's Ranklist - Vol.1

2018-01-19 20:42 197 查看


bLue's Ranklist - Vol.1

Time Limit: 1000MS Memory Limit: 65536KB

Submit Statistic


Problem Description

上一场比赛结束后,bLue 及时保存了一份比赛的排行榜 (Ranklist)。然而昨天 bLue 打开保存的 Ranklist 一看,发现保存的文件发生了不可描述的错误,非要强行描述的话,就是他保存的 Ranklist 上只能看到每个人的解题数量和总时间(包括罚时),而且顺序完全错乱了。
崩溃的 bLue 看着崩坏的 Ranklist 一筹莫展。不过他突然想到,马上就到循环赛了,不如正好出一个题让学弟学妹来帮他修复坏掉的 Ranklist,这样他就可以拿 AC 的代码去修复文件了,是不是相当机智啊 ^_^ 。
Ranklist 的排序规则是这样的:解题数多的靠前,如果解题数相同,则总时间少的靠前。如果两个人的解题数和总时间都相同,则他们的排名也相同。


Input

输入数据有多组(数据组数不超过 1000),到 EOF 结束。
每组数据包含多行:

第 1 行是一个整数 n (0 < n < 1000),表示 Ranklist 上的人数。
接下来有 n 行,每行包含两个整数 s, p (0 <= s < 20, 0 <= p < 10000),分别表示这个人的解题数和总时间(单位为分钟)。


Output

对于每组输入,输出 n 行,为重新排序后的 Ranklist。
每行输出均为此 Ranklist 上一个人的信息,包含 3 个整数 r, s, p,分别表示排名、解题数和总时间。


Example Input

5
6 300
5 185
5 185
5 140
4 120



Example Output

1 6 300
2 5 140
3 5 185
3 5 185
5 4 120


01
#include
<stdio.h>
02
#include
<string.h>
03
struct
gxx
04
{
05
int
num,
h;
06
}
a[1000], t;
07
int
main()
08
{
09
int
n,
i, count, j;
10
while
(
scanf
(
"%d"
,
&n)!=EOF)
11
{
12
for
(i
= 0; i<n; i++)
13
{
14
scanf
(
"%d%d"
,
&a[i].num, &a[i].h);
15
}
16
for
(i
= 0; i<n-1; i++)
17
{
18
for
(j
= 0; j<n-1-i; j++)
19
{
20
if
(a[j].num<a[j+1].num||(a[j].num==a[j+1].num&&a[j].h>a[j+1].h))
21
{
22
t
= a[j];
23
a[j]
= a[j+1];
24
   
4000
;
a[j+1]
= t;
25
}
26
}
27
    
193a3
;
}
28
count
= 0;
29
for
(i
= 0; i<n; i++)
30
{
31
if
(i==0)
32
{
33
printf
(
"1
%d %d\n"
,
a[0].num, a[0].h);
34
}
35
else
36
{
37
if
(a[i].num==a[i-1].num&&a[i].h==a[i-1].h)
38
{
39
count++;
40
printf
(
"%d
%d %d\n"
,
i-count+1 ,a[i].num, a[i].h);
41
}
42
else
43
{
44
count
= 0;
45
printf
(
"%d
%d %d\n"
,i+1,
a[i].num, a[i].h);
46
}
47
   
}
48
}
49
}
50
return
0;
51
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  C语言