Description
MSTC里有好多有特长的人, 有些是力量型人才,有些是智力型人才,有些是敏捷型的。现在告诉你 N 个人, 每个人的力量,智力,敏捷的值, 和每个人的编号。题目要求你将 N 个部员 按照力量 从大到小 排序, 如果两个部员的力量相同, 则按照 智力 值从大到小排序, 如果两个部员力量, 智力 都一样,则按照 敏捷从 小 到 大排序。 测试数据保证没有两个部员的 力量, 智力, 敏捷 全部相同。
Input
第一行 N :表示有 N 个同学。 ( 1 <= N <= 500 )
接下来 N 行, 第 i 行有 3 个值, ai, bi, ci a 代表 力量, b 代表智力, c 代表敏捷。 编号为 i ( i 是部员的编号, 1 <= i <= N )
Output
输出 N 行:
将排序后的部员编号输出。
每行一个编号
Sample Input
4
2 2 3
2 3 4
4 8 9
2 2 2
Sample Output
3
2
4
1
/**
*@author houyong
*
*/
#include<algorithm>
#include<iostream>
#include<stdio.h>
#include<stdlib.h>
#include<vector>
//#define LOCAL
using namespace std;
bool cmp(vector<int> a,vector<int> b)
{
if(a[0]!=b[0])
return a[0]>b[0];
else if(a[0]==b[0] && a[1]!=b[1])
return a[1]>b[1];
else
return a[2]<b[2];
}
int main()
{
#ifdef LOCAL
freopen("in.txt", "r", stdin);
freopen("out.txt", "w", stdout);
#endif // LOCAL
int T,j,i,k,k1;
scanf("%d", &T); //T个人数据
vector<vector<int> > vec; //vec里存放T个人的测试数据
//直接push_back,不用初始化大小
for(j=0;j<T;j++)
{
vector<int> v0(3,0);//下面要用下标访问,则要初始化大小
for(i=0;i<3;i++)
{
scanf("%d", &v0[i]);
}
vec.push_back(v0);
}
vector<vector<int> > vec0 =vec;
sort(vec.begin(),vec.end(),cmp);
for(k=0;k<T;k++)
{
for(k1=0;k1<T;k1++)
{
if(vec[k] == vec0[k1])
cout<<k1+1<<endl;
}
}
return 0;
}