社区讨论

求救:为什么90分???

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

讨论操作

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

当前回复
3 条
当前快照
1 份
快照标识符
@mi6lmyok
此快照首次捕获于
2025/11/20 06:53
4 个月前
此快照最后确认于
2025/11/20 06:53
4 个月前
查看原帖
CPP
#include <iostream>
#include <string>
#include <algorithm>
using namespace std;
struct EX {
       string name;
       int qp,bp;
       char xg,xs;
       int lw;
       int zf;
}e[105];
bool cmp (EX x,EX y)
{
     return x.zf>y.zf;
}
int main ()
{
    //freopen ("P1051.in","r",stdin);
    //freopen ("P1051.out","w",stdout);
    int n;
    cin>>n;
    for (int i=0;i<n;i++)
    cin>>e[i].name>>e[i].qp>>e[i].bp>>e[i].xg>>e[i].xs>>e[i].lw;
    for (int i=0;i<n;i++)
    {
        if (e[i].qp>80 && e[i].lw>=1) e[i].zf+=8000;
        if (e[i].qp>85 && e[i].bp>80) e[i].zf+=4000;
        if (e[i].qp>90) e[i].zf+=2000;
        if (e[i].qp>85 && e[i].xs=='Y') e[i].zf+=1000;
        if (e[i].bp>80 &&e[i].xg=='Y') e[i].zf+=850;
    }
    sort (e,e+n,cmp);
    cout<<e[0].name<<endl<<e[0].zf<<endl;
    int ans=0;
    for (int i=0;i<n;i++)
    ans+=e[i].zf;
    cout<<ans<<endl;
    return 0;
}

回复

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

正在加载回复...