社区讨论
求助,后七个点WA(给一永久关注
B3968[GESP202403 五级] 成绩排序参与者 3已保存回复 2
讨论操作
快速查看讨论及其快照的属性,并进行相关操作。
- 当前回复
- 2 条
- 当前快照
- 1 份
- 快照标识符
- @lyx2cvpz
- 此快照首次捕获于
- 2024/07/22 22:09 2 年前
- 此快照最后确认于
- 2024/07/23 08:26 2 年前
求大佬指出错误类型或者给个hack数据之类的
CPP#include<bits/stdc++.h>
using namespace std;
const int N=1e4+5;
struct fac{
int chinese;
int english;
int math;
int num;
int grade;
int all_point;
}a[N];
int n;
int main(){
scanf("%d",&n);
for(int i=1;i<=n;i++){
scanf("%d%d%d",&a[i].chinese,&a[i].math,&a[i].english);
a[i].num=i;
a[i].all_point=a[i].chinese+a[i].math+a[i].english;
}
int last=-1;
for(int i=1;i<=n;i++){
for(int j=i+1;j<=n;j++){
if(a[i].all_point>a[j].all_point){
continue;
}else if(a[i].all_point==a[j].all_point){
if(a[i].chinese+a[i].math>a[j].chinese+a[j].math){
continue;
}else if(a[i].chinese+a[i].math==a[j].chinese+a[j].math){
if(max(a[i].chinese,a[i].math)>max(a[j].chinese,a[j].math)){
continue;
}else if(max(a[i].chinese,a[i].math)==max(a[j].chinese,a[j].math)){
a[i].grade=last;
a[j].grade=last;
}else{
swap(a[i],a[j]);
last--;
}
}else{
swap(a[i],a[j]);
last--;
}
}else{
swap(a[i],a[j]);
last--;
}
}
}
int l=0,r=0,lei=1;
for(int i=1;i<=n;i++){
if(a[i].grade>0){
continue;
}else if(a[i].grade==0){
a[i].grade=lei;
lei++;
}else{
int l=i,r=i;
int find=a[i].grade;
for(int j=i+1;j<=n;j++){
if(a[j].grade==find){
r=j;
}else{
break;
}
}
int x=lei;
for(int j=l;j<=r;j++){
a[j].grade=x;
lei++;
}
lei--;
}
}
for(int i=1;i<=n;i++){
for(int j=1;j<=n;j++){
if(a[j].num==i){
printf("%d\n",a[j].grade);
break;
}
}
}
return 0;
}
回复
共 2 条回复,欢迎继续交流。
正在加载回复...