最近看我旁边的某位女士又开始做题了,我c某人也要开始写水题(再水也会WA的)题解了

Description

ZZK和SYC不知从哪个老师那里拿到了一堆实验数据,需要排序后再交回去。
实验数据的格式为:
样本序号 观测数据
要求按照观测数据由小到大排列,当观测数据相等时按照出现顺序排列

Input

实验数据,每行两个不超过100000的整数,分别为样本序号和观测数据,直到EOF
保证不超过100000行

Output

排序后的实验数据
Sample Input
4 2
5 4
4 3
3 4
2 9
5 6
6 10
3 5
10 4
10 8
5 4
7 6
1 4
3 10
8 7
8 7
5 4
3 4
4 4
6 5

Sample Output

4 2
4 3
5 4
3 4
10 4
5 4
1 4
5 4
3 4
4 4
3 5
6 5
5 6
7 6
8 7
8 7
10 8
2 9
6 10
3 10

解法

就是结构体排序……不过在排序规则上有、、讲究
赛前复习,赛后整理

我的问题

别忘了出现顺序

代码

真没什么可说的

#include<iostream>
#include<cstdio>
#include<algorithm>
using namespace std;
struct node
{
    int num;
    int data;
    int n;		//出现顺序
}a[100001];
bool rule(node b,node c)
{
    if(b.data==c.data) return b.n<c.n;		//如data相同,按照出现先后排序
    else return b.data<c.data;
}
int main()
{
    int i=0;
    while(scanf("%d %d",&a[i].num,&a[i].data)!=EOF)
    {
        a[i].n=i;		//记录出现顺序
        ++i;
    }
    sort(a,a+i,rule);
    for(int j=0;j<i;++j) printf("%d %d\n",a[j].num,a[j].data);
    return 0;
}