90分求助
查看原帖
90分求助
520847
HOILAI_CEO楼主2023/5/18 18:37

大概错因:如果有两位或两位以上的学生获得的奖金最多,输出他们之中在输入文件中出现最早的学生的姓名。 但是应该怎么改????

#include<bits/stdc++.h>
using namespace std;
#define maxn 1001
int n,tot;
struct student
{
    string name;
    int value_qimo;
    int value_class;
    string bool_ganbu;
    string bool_weststu;
    int count_art;
    int ans;
    int tot_prize_count;
};
vector<student>stu_list;
struct res
{
    string name;
    int money;
};
bool cmp(student x,student y)
{
    
    return x.ans>y.ans;
}
int main()
{
    cin>>n;
    for(int i=0;i<n;i++)
    {
        student temp;
        cin>>temp.name>>temp.value_qimo>>temp.value_class>>temp.bool_ganbu>>temp.bool_weststu>>temp.count_art;
        temp.ans=0;temp.tot_prize_count=0;
        stu_list.push_back(temp);
    }
    for(int i=0;i<stu_list.size();i++)
    {
        //stu_list
        if(stu_list[i].value_qimo>80 && stu_list[i].count_art>=1)
        {
            stu_list[i].ans+=8000;stu_list[i].tot_prize_count++; 
        }
        else if(stu_list[i].value_qimo>85 && stu_list[i].value_class >80)
        {
            stu_list[i].ans+=4000;stu_list[i].tot_prize_count++;
        }
        else if(stu_list[i].value_qimo>90)
        {
            stu_list[i].ans+=2000;stu_list[i].tot_prize_count++;
        }
        else if(stu_list[i].value_qimo>85 && stu_list[i].bool_weststu=="Y")
        {
            stu_list[i].ans+=1000;stu_list[i].tot_prize_count++;
        }
        else if(stu_list[i].value_class>80 && stu_list[i].bool_ganbu=="Y")
        {
            stu_list[i].ans+=850;stu_list[i].tot_prize_count++;
        }
        tot+=stu_list[i].ans;
    }
    sort(stu_list.begin(),stu_list.end(),cmp);
    //RaC 90 85 N N 1
    //GqsbbvwAF 90 90 N N 8
    cout<<stu_list.front().name<<endl<<stu_list.front().ans<<endl<<tot;
    return 0;
}
2023/5/18 18:37
加载中...