社区讨论

WA

P1051[NOIP 2005 提高组] 谁拿了最多奖学金参与者 1已保存回复 0

讨论操作

快速查看讨论及其快照的属性,并进行相关操作。

当前回复
0 条
当前快照
1 份
快照标识符
@mizk8us2
此快照首次捕获于
2025/12/10 13:20
3 个月前
此快照最后确认于
2025/12/12 21:50
3 个月前
查看原帖
CPP
#include<string>
#include<vector>
#include<iostream>
#include<algorithm>
struct A{//学生
    std::string a;//姓名
    int b;//期末平均成绩
    int c;//班级评议成绩
    char d;//是否是学生干部
    char e;//是否是西部省份学生
    int f;//发表的论文数
    int g;//奖金
    int h;//输入文件
};
bool B(A x,A y){
    if(x.g!=y.g) return x.g>y.g;
    else return x.h>y.h;
}
int main(){
    int n,b=0;
    std::cin>>n;
    std::vector<A> a(n);
    for(int i=0;i<n;++i){
        a[i].h=i;
        std::cin>>a[i].a>>a[i].b>>a[i].c>>a[i].d>>a[i].e>>a[i].f;
        if(a[i].b>80&&a[i].f>=1) a[i].g+=8000;
        if(a[i].b>85&&a[i].c>80) a[i].g+=4000;
        if(a[i].b>90) a[i].g+=2000;
        if(a[i].b>85&&a[i].e=='Y') a[i].g+=1000;
        if(a[i].c>80&&a[i].d=='Y') a[i].g+=850;
        b+=a[i].g;
    }
    std::sort(a.begin(),a.end(),B);
    std::cout<<a[1].a<<'\n'<<a[1].g<<'\n'<<b;
    return 0;
}

回复

0 条回复,欢迎继续交流。

正在加载回复...