URAL 1100 Final Standings

题目链接http://acm.timus.ru/problem.aspx?space=1&num=1100

思路 结构体的二级排序 不过要按照先输入先输出的顺序。

因此可以先给它赋上编号。然后如果相等的话,按照编号来进行二级排序。先输出编号小的。

View Code
 1 #include<stdio.h>

 2 #include<stdlib.h>

 3 struct in

 4 {

 5     int id;

 6     int m;

 7 int num;

 8 }ss[150001];

 9 int cmp(const void *a,const void *b)

10 {

11 struct in*c=(struct in*)a;

12 struct in*d=(struct in*)b;

13 if(c->m!=d->m) return d->m-c->m;

14 return c->num-d->num;

15 

16 }

17 int main()

18 {

19     int n,i;

20     while(~scanf("%d",&n))

21     {

22 for(i=0;i<n;i++)

23     {

24         scanf("%d %d",&ss[i].id,&ss[i].m);

25 ss[i].num=i;

26     }

27         qsort(ss,n,sizeof(ss[0]),cmp);

28     for(i=0;i<n;i++)

29     {

30         printf("%d %d\n",ss[i].id,ss[i].m);

31     }

32 }

33     return 0;

34 }

 

你可能感兴趣的:(final)