题目描述
蓝天保卫战正式打响了!绿水青山,就是金山银山!
我们有𝑛n个目标城市,编号从1∼𝑛1∼n
现在已经统计了这些城市近两年的空气质量,并决定制定空气质量整治的顺序。
我们希望优先整治空气质量波动较大的城市,也就是两次测定的空气质量差值的绝对值较大的
如果两个城市波动情况相同,则优先整治城市编号较小的
请你确定整治的顺序
输入格式
输入共 𝑛+1n+1 行
第一行输入一个正整数 𝑛n ,表示共有𝑛n个城市
接下来𝑛n行每行两个正整数,依次为11号到𝑛n号城市的两次空气质量情况𝑎𝑖ai和𝑏𝑖bi,用一个空格分隔
输出格式
输出一行包含𝑛n个整数,即整治的顺序
输入样例
5
2 15
2 3
5 8
6 6
15 2
输出样例
1 5 3 2 4
数据规模
对于60%60%的数据, 1≤𝑛≤1001≤n≤100
对于100%100%的数据, 1≤𝑛≤100000,1≤𝑎𝑖,𝑏𝑖≤1000001≤n≤100000,1≤ai,bi≤100000
代码
#include<bits/stdc++.h>
using namespace std;
struct node{
int j,id;
bool operator<(const node &x)const{
if(x.j==j){
return id<x.id;
}
return j>x.j;
}
};
node a[100005];
int main()
{
int n;
cin>>n;
int s=1,d=1;
for(int i=1;i<=n;i++){
int c,d;
cin>>c>>d;
a[i].j=abs(c-d);
a[i].id=i;
}
sort(a+1,a+1+n);
for(int i=1;i<=n;i++){
cout<<a[i].id<<" ";
}
}