将我的程序和已经ac的程序对比,没啥区别,但我的无法ac

将我的程序和已经ac的程序都递交评测,我的程序就是无法ac,为什么?
对比了两个程序,没啥不同。我的程序在本地运行没有错,但是递交评测无法通过其它评测数据。
我的程序:

#include<iostream> 
using namespace std;

int main() {
    
    string name; //姓名 
    int score, class_score; // 期末平均成绩,班级评议成绩 
    char student_leader, west; // 是否是学生干部,是否是西部学生 
    int paper; // 发表的论文数 
    int bonus;  //当前学生的奖学金 
        
    int all_bonus = 0; //n个学生的奖学金 
    int mx_bonus=0; //n个学生中最多的奖学金 
    string mx_bonus_name; //获取最多的奖学金的 姓名 
    
    int n;
    cin >> n;
    for (int i = 1; i <= n; i++) {
        bonus = 0;
        cin >> name >> score >> class_score >> student_leader >> west >> paper;
        if (score>80 && paper >= 1) {
            bonus += 8000;
        } 
        if (score>85 && class_score>80) {
            bonus += 4000;
        }
        if (score>90) {
            bonus += 2000;
        }
        if (score>85 && west=='Y') {
            bonus += 1000;
        }
        if (score>80 && student_leader=='Y') {
            bonus += 850; 
        } 
        
        //计算判断 
        if (mx_bonus < bonus) {
            mx_bonus = bonus;
            mx_bonus_name = name;
        }
        all_bonus += bonus;
    }
    cout << mx_bonus_name << endl;
    cout << mx_bonus << endl;
    cout << all_bonus;
    return 0;
}

已经ac的程序如下,来自题解:https://vijos.org/p/1001/solution

#include<iostream>
using namespace std;
int main()
{
    string a,g;
    int b,c,f,n,money=0,result=0,sum=0;
    char d,e;
    cin>>n;
    for(int i=1;i<=n;i++)
    {
        cin>>a>>b>>c>>d>>e>>f;
        money=0;
        if(b>80&&f>=1)
        money+=8000;
        if(b>85&&c>80)
        money+=4000;
        if(b>90)
        money+=2000;
        if(b>85&&e=='Y')
        money+=1000;
        if(c>80&&d=='Y')
        money+=850;
        sum+=money;
        if(result<money)
        {
            result=money;
            g=a;
        }
    }
    cout<<g<<endl<<result<<endl<<sum<<endl;
    return 0;
}

1 条评论

  • 1

信息

ID
1001
难度
5
分类
模拟 点击显示
标签
递交数
39307
已通过
12806
通过率
33%
被复制
132
上传者