90 pts WA #7 玄关求调 + 厌氧灵异事件
查看原帖
90 pts WA #7 玄关求调 + 厌氧灵异事件
723205
xjsmsms楼主2024/6/19 18:01

这个与这个 是同一份代码,一个开O2,一个没开O2,结果是一个90pts,一个全TLE或者是后7个点RE。 详情请见提交记录

球球了QWQ

RT 望各位大佬赐教

附上文代码

#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;
}
2024/6/19 18:01
加载中...