50分求条,玄关
查看原帖
50分求条,玄关
961045
ThatMoon楼主2025/7/28 08:21

样例已过,WA4个RE1个

#include<bits/stdc++.h>
using namespace std;
const int MAXN = 3e5 + 10 ; 
struct Node{
	int id ;
	int total ;
	int yu , shu , yin ;
}node[MAXN];
bool cmp(Node a , Node b){
	return a.total > b.total ;
}
bool cmp1(Node a , Node b){
	return a.yu > b.yu ;
}
bool cmp2(Node a , Node b){
	return a.id > b.id ;
}
int main(){
	int n , mark = 0 , mark2 = 0 ;
	cin>>n;
	for (int i = 1 ; i <= n ; ++i){
		cin>>node[i].yu>>node[i].shu>>node[i].yin;
		node[i].id = i ;
		node[i].total += node[i].yu + node[i].shu + node[i].yin ;
	}
	sort(node + 1 , node + n + 1 , cmp);
	for (int i = 1 ; i <= n ; ++i){
		if (node[i].total == node[i + 1].total){
			mark = i ;
			for (int j = i ; j <= n ; ++j){
				if (node[i].total != node[j].total){
					mark2 = j - 1 ;
					break ;
				}
				if (node[i].total == node[j].total){
					continue ;
				}
			}
			sort(node + 1 + mark , node + 1 + mark2 , cmp1);
		}
	}
	for (int i = 1 ; i <= n ; ++i){
		if (node[i].yu == node[i + 1].yu){
			mark = i ;
			for (int j = i ; j <= n ; ++j){
				if (node[i].yu != node[j].yu){
					mark2 = j - 1 ;
					break ; 
				}
				if (node[i].yu == node[j].yu){
					continue ;
				}
			}
			sort(node + 1 + mark , node + 1 + mark2 , cmp2);
		}
	}
	for (int i = 1 ; i <= 5 ; ++i){
		cout<<node[i].id <<" "<<node[i].total<<"\n";
	}
	return 0 ;
}
2025/7/28 08:21
加载中...