中南oj 1215: 稳定排序
1215: 稳定排序
Time Limit: 2 Sec Memory Limit: 128 MB Submit: 111 Solved: 43 [Submit][Status][Web Board]Description
给出二元数组a[MAXN][2],按第一个关键值从小到大排序后输出,要求第一关键值相同情况下不改变原数组次序
Input
每组数据第一行为整数n,1 <= n <= 10 ^ 5。
接下来n行每行两个整数空格隔开。
Output
输出排序后的数组
Sample Input
3
2 4
1 0
2 3
3
4 2
0 4
0 2
Sample Output
1 0
2 4
2 3
0 4
0 2
4 2
加一个 i,表示输入的顺序。sort。
1 #include<iostream> 2 #include<cstdio> 3 #include<cstring> 4 #include<cstdlib> 5 #include<algorithm> 6 using namespace std; 7 8 struct node 9 { 10 int a; 11 int b; 12 int i; 13 }f[100003]; 14 15 bool cmp(node n1,node n2) 16 { 17 if(n1.a==n2.a) return n1.i<n2.i; 18 else return n1.a<n2.a; 19 } 20 int main() 21 { 22 int n; 23 int i; 24 while(scanf("%d",&n)>0) 25 { 26 for(i=1;i<=n;i++) 27 { 28 scanf("%d%d",&f[i].a,&f[i].b); 29 f[i].i=i; 30 } 31 32 sort(f+1,f+1+n,cmp); 33 for(i=1;i<=n;i++) 34 printf("%d %d\n",f[i].a,f[i].b); 35 } 36 return 0; 37 }