#include <iostream>
#include <stdio.h>
#include <algorithm>
#include <math.h>
#include <string>
#include <string.h>
#include <vector>
#include <queue>
#include <stack>
#include <sstream>
using namespace std;
//1167
struct Node{
int preP;
int v;
int postP;
};
bool cmp1(Node a,Node b){
return a.v<b.v;
}
bool cmp2(Node a,Node b){
return a.preP<b.preP;
}
vector<Node> v;
int k,n;
int main(){
//freopen("input.txt","r",stdin);
while(scanf("%d",&n)!=EOF){
v.clear();
Node t;
for(int i=1;i<=n;i++){
scanf("%d",&t.v);t.postP=-1,t.preP=i;
v.push_back(t);
}
sort(v.begin(),v.end(),cmp1);
k=1;
v[0].postP=k;
for(int i=1;i<v.size();i++){
if(v[i].v>v[i-1].v) v[i].postP=++k;
else v[i].postP=k;
}
sort(v.begin(),v.end(),cmp2);
for(int i=0;i<v.size();i++){
if(i==0) printf("%d",v[i].postP);
else printf(" %d",v[i].postP);
}
printf("\n");
}
return 0;
}
/**************************************************************
Problem: 1167
User: cust123
Language: C++
Result: Accepted
Time:10 ms
Memory:1912 kb
****************************************************************/
题目1167:数组排序
最新推荐文章于 2020-06-22 11:13:05 发布