记录编号 |
112225 |
评测结果 |
AAAAAAAAAA |
题目名称 |
[NOIP 2005]谁拿了最多奖学金 |
最终得分 |
100 |
用户昵称 |
ok |
是否通过 |
通过 |
代码语言 |
C++ |
运行时间 |
0.003 s |
提交时间 |
2014-07-15 10:10:47 |
内存使用 |
0.32 MiB |
显示代码纯文本
#include <cstring>
#include <fstream>
using namespace std;
ifstream fin("scholar.in");
ofstream fout("scholar.out");
class Student
{
public:
string name;//學生姓名
unsigned int final;//期末成績
unsigned int Class;//班級評議
bool cadre; //是否幹部
bool west; //是否西部學生
short int lunwen;//論文數量
long long total;
Student()
{
cadre=false;
west=false;
total=0;
}
}N[101];
int n;
int maxn=0;
int maxx=0;
long long s=0;
void init()
{
char chr;
fin>>n;
for (int i=1;i<=n;i++)
{
fin>>N[i].name>>N[i].final>>N[i].Class;
fin>>chr;
if (chr=='Y') N[i].cadre=true;
fin>>chr;
if (chr=='Y') N[i].west=true;
fin>>N[i].lunwen;
}
return;
}
void compute(int num)
{
if (N[num].final>80 && N[num].lunwen>=1) N[num].total+=8000;
if (N[num].final>85 && N[num].Class>80) N[num].total+=4000;
if (N[num].final>90) N[num].total+=2000;
if (N[num].final>85 && N[num].west) N[num].total+=1000;
if (N[num].Class>80 && N[num].cadre) N[num].total+=850;
if (N[num].total>maxn)
{
maxn=N[num].total;
maxx=num;
}
s+=N[num].total;
}
int main()
{
init();
for (int i=1;i<=n;i++)
compute(i);
fout<<N[maxx].name<<endl<<N[maxx].total<<endl<<s<<endl;
return 0;
}