社区讨论

求调!回者必关

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 条回复,欢迎继续交流。

正在加载回复...