hdu 5182 PM2.5

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

建立结构体,按建立排序方式
#include <iostream>
#include <algorithm>
#include <cstdio>
using namespace std;
struct node
{
    int value,test,id;
    bool operator < (const node &another) const
    {
        if(value!=another.value) return value>another.value;
        if(test!=another.test)   return test<another.test;
        return id<another.id;
    }
}a[111];
int main()
{
    int n,u,v;
    while(~scanf("%d",&n))
    {
        for(int i=0;i<n;i++)
        {
            scanf("%d%d",&u,&v);
            a[i].value=u-v;
            a[i].test=v;
            a[i].id=i;
        }
        sort(a,a+n);
        for(int i=0;i<n;i++)
        {
            if(i) printf(" ");
            printf("%d",a[i].id);
        }
        puts("");
    }
    return 0;
}

 

posted @ 2016-04-13 21:50  江南何采莲  阅读(145)  评论(0编辑  收藏  举报