- 谁拿了最多奖学金
- 2016-02-24 23:17:23 @
#include<cstdio>
#include<iostream>
#include<cmath>
#include<algorithm>
#include<string>
#include<cstring>
using namespace std;
string ans1;
int ans=0,ans2;
inline int read(){
int x=0,f=1;char ch=getchar();
while(ch<'0'||ch>'9'){if(ch=='-')f=-1;ch=getchar();}
while(ch>='0'&&ch<='9'){x=x*10+ch-'0';ch=getchar();}
return x*f;
}
int main(){
int n;
n=read();
string name[n+1];
int qimo[n+1],Class[n+1];
char worker[n+1],west[n+1];
int art[n+1];
int a[n+1];
memset(a,0,sizeof(a));
for(int i=1;i<=n;i++){
cin>>name[i]>>qimo[i]>>Class[i]>>worker[i]>>west[i]>>art[i];
}
for(int i=1;i<=n;i++){
if(qimo[i]>=80&&art[i]>=1){
a[i]+=8000;
}
if(qimo[i]>85&&Class[i]>80){
a[i]+=4000;
}
if(qimo[i]>90){
a[i]+=2000;
}
if(qimo[i]>85&&west[i]=='Y'){
a[i]+=1000;
}
if(Class[i]>80&&worker[i]=='Y'){
a[i]+=850;
}
ans+=a[i];
}
for(int i=1;i<=n;i++){
if(a[i]>=a[i+1]){
ans1=name[i];
ans2=a[i];
}
else
if(a[i]<a[i+1]){
ans1=name[i+1];
ans2=a[i+1];
}
}
cout<<ans1<<endl<<ans2<<endl<<ans;
return 0;
}
2 条评论
-
蒟蒻hjy LV 8 @ 2016-02-25 22:22:07
谢谢
-
2016-02-25 03:32:37@
你的程序运行样例都运行不过去,这种时候不应该问别人**哪错了**,因为你完全可以自己找出来。
- 逐行调试立刻发现,读入n的部分格式处理错误,修改为cin >> n;
- 运行样例发现ans1输出是乱码,检查ans被name[i]和name[i+1]赋值的时候,i和i+1的取值情况,发现取了name[5],所以出了乱码,说明需要增加相关的边界限制。
- 1