1 条题解

  • 0

    思路

    根据题意模拟即可,不用排序,按打擂台的思路写。

    code

    #include<bits/stdc++.h>
    using namespace std;
    struct student{
    	char name[50];
    	int qm,py,lw;//期末成绩,评议成绩,论文数
    	char gb,xb;//是否干部,是否西部
    	int max;
    }n[110];
    int main(){
    	int x;
    	cin>>x;
    	int ans=-1,k,num=0;
    	for(int i=1;i<=x;i++){
    		cin>>n[i].name>>n[i].qm>>n[i].py>>n[i].gb>>n[i].xb>>n[i].lw;
    		if(n[i].qm>80&&n[i].lw>0)  n[i].max+=8000;//院士奖学金
    		if(n[i].qm>85&&n[i].py>80)	n[i].max+=4000;//五四奖学金
    		if(n[i].qm>90)  			n[i].max+=2000;//成绩优秀奖
    		if(n[i].qm>85&&n[i].xb=='Y')    n[i].max+=1000;//成绩优秀奖
    		if(n[i].py>80&&n[i].gb=='Y')    n[i].max+=850;//班级贡献奖
    		if(n[i].max>ans){
    			ans=n[i].max;
    			k=i;
    		}
    		num+=n[i].max;
    	}
    	cout<<n[k].name<<endl<<n[k].max<<endl<<num;
    	return 0;
    }
    
    • 1

    [NOIP2005 提高组] 谁拿了最多奖学金

    信息

    ID
    390
    时间
    1000ms
    内存
    256MiB
    难度
    9
    标签
    递交数
    8
    已通过
    6
    上传者