2015-06-14 17:13:05
【传送门】
总结:比赛的时候有点逗比... C wa了一发后弃疗了,过掉了D,最后D因为一个巨坑的数据FST掉了... QAQ
A题:简单排序
#include <cstdio> #include <cstring> #include <cstdlib> #include <cmath> #include <vector> #include <map> #include <set> #include <stack> #include <queue> #include <string> #include <iostream> #include <algorithm> using namespace std; #define getmid(l,r) ((l) + ((r) - (l)) / 2) #define MP(a,b) make_pair(a,b) #define PB(a) push_back(a) typedef long long ll; typedef pair<int,int> pii; const double eps = 1e-8; const int INF = (1 << 30) - 1; int n; struct node{ int a,id,pos; }p[2010]; bool cmp(node a,node b){ return a.a > b.a; } bool cmp_id(node a,node b){ return a.id < b.id; } int main(){ scanf("%d",&n); for(int i = 1; i <= n; ++i){ scanf("%d",&p[i].a); p[i].id = i; } sort(p + 1,p + n + 1,cmp); int P = 0; p[1].pos = 1; for(int i = 2; i <= n; ++i){ if(p[i].a == p[i - 1].a){ p[i].pos = p[i - 1].pos; } else p[i].pos = i; } sort(p + 1,p + n + 1,cmp_id); for(int i = 1; i <= n; ++i){ printf("%d ",p[i].pos); } puts(""); return 0; }