马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
#include <iostream>
#include <algorithm>
using namespace std;
const int MAX = 10001;
struct node
{
int date; //数值
int rank; //排名
int index; //下标
};
node a[MAX];
bool comp1(node x, node y)
{
return x.date < y.date; //自定义比较函数
}
bool comp2(node x, node y)
{
return x.index < y.index; //自定义比较函数
}
int main()
{
int n;
cin >> n;
for (int i = 1; i <= n; i++)
{
cin >> a[i].date;
a[i].index = i;
}
sort(a + 1, a + 1 + n, comp1); //根据数值排序,求rank
for (int i = 1; i <= n; i++)
{
a[i].rank = i;
}
sort(a + 1, a + 1 + n, comp2); //根据下标排序,回到原顺序
for (int i = 1; i <= n; i++)
{
cout << a[i].rank << " ";
}
return 0;
}
|