题目描述 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;
}