专栏文章
题解:P13797 [SWERC 2023] Programming-trampoline-athlon!
P13797题解参与者 1已保存评论 0
文章操作
快速查看文章及其快照的属性,并进行相关操作。
- 当前评论
- 0 条
- 当前快照
- 1 份
- 快照标识符
- @minypc2a
- 此快照首次捕获于
- 2025/12/02 10:31 3 个月前
- 此快照最后确认于
- 2025/12/02 10:31 3 个月前
思路
题面很长,但其实就是个模拟。
首先每个队这么多数据肯定要用结构体存的,这点不用多说。
我们边输入边计算每队得分,得分是编程得分和蹦床得分的和。编程得分为解决的问题数乘以 。蹦床得分为去掉最高和最低分后的四个中间分的总和。
然后就可以排序了。按得分降序排序,得分相同就按输入顺序升序排序。另外还要检查比其得分高的队伍数量是否不超过 。
代码
CPP#include<bits/stdc++.h>
using namespace std;
int n,p,e[6],sum,c[100001];
string s;
struct z{
int s,id;
string c;
}t[100001];
bool cmp(z a,z b){
if(a.s!=b.s)return a.s>b.s;
return a.id<b.id;
}
int main(){
cin>>n;
for(int i=1;i<=n;i++){
cin>>s>>p;
for(int j=0;j<6;j++){
cin>>e[j];
}
sort(e,e+6);
t[i].s=p*10+e[1]+e[2]+e[3]+e[4];
t[i].id=i;
t[i].c=s;
}
sort(t+1,t+n+1,cmp);
c[1]=0;
for(int i=2;i<=n;i++){
if(t[i].s<t[i-1].s){
c[i]=i-1;
}
else{
c[i]=c[i-1];
}
}
for(int i=1;i<=n;i++){
if(c[i]<=2){
cout<<t[i].c<<" "<<t[i].s<<endl;
}
else break;
}
return 0;
}
相关推荐
评论
共 0 条评论,欢迎与作者交流。
正在加载评论...