这个与这个 是同一份代码,一个开O2,一个没开O2,结果是一个90pts,一个全TLE或者是后7个点RE。 详情请见提交记录
球球了QWQ
#include <bits/stdc++.h>
#define ll long long
#define rep(i,a,n) for(register int i = (a);i<=(n);++i)
using namespace std;
const int N = 2e4+10;
struct node{
int c,m,e;
int index;
int sum;
int pm;
}a[N*200];
int sa[N],sb[N];//记录需要调整排名的学生,按输入顺序记录的数组
int cnt;//sa ,sb 的长度
int n;
inline bool cmp(node x,node y){
if(x.sum!=y.sum){
return x.sum>y.sum;
}else if((x.c+x.m)!=(y.c+y.m)){
return (x.c+x.m)>(y.c+y.m);
}else if(max(x.c,x.m)!=max(y.c,y.m)){
return max(x.c,x.m)>max(y.c,y.m);
}else{
++cnt;
sa[cnt] = x.index,sb[cnt] = y.index;
}
}
bool cmp2(node x,node y){
return x.index<y.index;
}
signed main(void){
cin >>n;
rep(i,1,n){
cin >>a[i].c>>a[i].m>>a[i].e;
a[i].sum = a[i].c + a[i].m+a[i].e;
a[i].index = i;
}
sort(a+1,a+1+n,cmp);
rep(i,1,n) a[i].pm = i;
for(int i =1;i<=cnt ;++i){
for(int j = 1;j<=n;++j){
if(sa[i] == a[j].index){
for(int k =1;k<=n;++k){
if(sb[i] == a[k].index){
int t = min(a[j].pm,a[k].pm);
a[j].pm = t;a[k].pm =t;
}
}
}
}
}
sort(a+1,a+1+n,cmp2);
rep(i,1,n){
cout <<a[i].pm<<endl;
}
return 0;
}