题目描述 Description
给定三个整数,请对他们进行排序,输出排名
输入描述 Input Description
3行三个整数a,b,c,保证没有相同的数
输出描述 Output Description
3行,每行一个整数,表示排名
样例输入 Sample Input
2
4
6
样例输出 Sample Output
3
2
1
数据范围及提示 Data Size & Hint
3个数中6>4>2
数据范围:
-30000<=a,b,c<=30000
解题思路:
这题好像和一场BC的第一题碰车了,就是说先按照value从大到小排列,记录rank,然后再按照id排回去,输出rank。。。别晕就行了,其实很简单。
代码:
# include<cstdio> # include<iostream> # include<algorithm> using namespace std; struct node { int id; int value; int rank; }a[5]; int cmp ( const struct node & x,const struct node & y ) { return x.value > y.value; } int cmp1 ( const struct node & x,const struct node & y ) { return x.id < y.id; } int main(void) { for ( int i = 1;i <= 3;i++ ) { cin>>a[i].value; a[i].id = i; } sort(a+1,a+1+3,cmp); for ( int i = 1;i <= 3;i++ ) { a[i].rank = i; } sort(a+1,a+1+3,cmp1); for ( int i = 1;i <= 3;i++ ) { cout<<a[i].rank<<endl; } return 0; }