社区讨论
求调!回者必关
P1051[NOIP 2005 提高组] 谁拿了最多奖学金参与者 2已保存回复 1
讨论操作
快速查看讨论及其快照的属性,并进行相关操作。
- 当前回复
- 1 条
- 当前快照
- 1 份
- 快照标识符
- @m43wqthf
- 此快照首次捕获于
- 2024/11/30 16:25 去年
- 此快照最后确认于
- 2025/11/04 13:35 4 个月前
CPP
#include<bits/stdc++.h>
using namespace std;
const int N = 105;
int n;
struct stu
{
string name;
int q,b,f,ans,id;
char x,y;
}a[N];
bool w(stu x)
{
if(x.q > 80 && x.f >= 1) return 1;
else return 0;
}
bool s(stu x)
{
if(x.q > 85 && x.b > 80) return 1;
else return 0;
}
bool c(stu x)
{
if(x.q > 90) return 1;
else return 0;
}
bool j(stu n)
{
if(n.q > 85 && n.x == 'Y') return 1;
else 0;
}
bool d(stu x)
{
if(x.b > 80 && x.y == 'Y') return 1;
else return 0;
}
bool cmp(stu a,stu b)
{
if(a.ans == b.ans)
{
return a.id < b.id;
}
return a.ans > b.ans;
}
int main()
{
int number = 0;
cin >> n;
for(int i=1; i<=n; i++)
{
cin >> a[i].name >> a[i].q >> a[i].b >> a[i].x >> a[i].y >> a[i].f;
a[i].id = i;
if(w(a[i]) == 1) a[i].ans += 8000;
if(s(a[i]) == 1) a[i].ans += 4000;
if(c(a[i]) == 1) a[i].ans += 2000;
if(j(a[i]) == 1) a[i].ans += 1000;
if(d(a[i]) == 1) a[i].ans += 850;
number += a[i].ans;
cout << number << endl;
}
sort(a+1,a+1+n,cmp);
cout << a[1].name << endl << a[1].ans << endl << number;
return 0;
}
回复
共 1 条回复,欢迎继续交流。
正在加载回复...