问题描述
目前,我们用PM2.5的含量来描述空气质量的好坏。一个城市的PM2.5含量越低,它的空气质量就越好。所以我们经常按照PM2.5的含量从小到大对城市排序。一些时候某个城市的排名可能上升,但是他的PM2.5的含量也上升了。这就意味着他的空气质量并没有改善。所以这样的排序方式是不合理的。为了使得排序合理,我们提出了一个新的排序方法。我们按照两个PM2.5含量测量的差值(第一次-第二次)来对他们按降序排序,如果有重复,按照第二次的测量值升序排序,如果还有重复,按照输入的顺序排序。
输入描述
多组测试数据(大概1的信息。
请处理到文件末尾。
[参数说明]
所有整数都在]的范围内。
输出描述
对于每一个数据,输出排好序之后的城市ID。
输入样例
2
100 1
1 2
3
100 50
3 4
1 2
输出样例
0 1
0 2 1

思路:三关键词排序

 1 #include<iostream>
 2 #include<cstdio>
 3 #include<algorithm>
 4 #define maxn 1000
 5 char ch[maxn];
 6 using namespace std;
 7 struct T
 8 {
 9     int x;int y;int z;
10 }a[maxn];
11 int cmp(T x,T y)
12 {
13     return ((x.x>y.x) ||((x.x==y.x && (x.y<y.y))) || (x.x==y.x && x.y==y.y && (x.z<y.z)));
14 }
15 int main()
16 {
17     int n,x,y;
18     while(scanf("%d",&n)!=EOF)
19     {
20         for(int i=1;i<=n;i++)
21         {
22             scanf("%d%d",&x,&y);
23             a[i].x=x-y;
24             a[i].y=y;
25             a[i].z=i-1;
26         }
27         sort(a+1,a+1+n,cmp);
28         for(int i=1;i<n;i++)
29         {
30             printf("%d ",a[i].z);
31         }
32         printf("%d\n",a[n].z);
33     }
34     return 0;
35 }
View Code

相关文章:

  • 2021-05-21
  • 2021-07-19
  • 2021-10-22
  • 2021-10-22
  • 2021-08-18
  • 2021-07-29
  • 2021-12-31
  • 2022-02-23
猜你喜欢
  • 2022-12-23
  • 2022-12-23
  • 2021-08-13
  • 2021-09-28
  • 2021-07-17
  • 2021-10-03
  • 2021-12-12
相关资源
相似解决方案