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 }