0分求助大佬们
查看原帖
0分求助大佬们
641488
frank515楼主2022/5/4 00:54

0分求助,求和不正确

#include <bits/stdc++.h>
using namespace std;

int solution(int argc, char **argv) {
    int n;
    cin >> n;
    vector<string> name(n), isCadre(n), isWest(n);
    vector<int> endGrade(n), classGrade(n), paper(n);
    vector<int> count(n), money(n);
    int sum = 0;
    for (int i = 0; i < n; i++) {
        cin >> name[i] >> endGrade[i] >> classGrade[i] >> isCadre[i] >> isWest[i] >> paper[i];
    }
    for (int i = 0; i < n; i++) {
        if (endGrade[i] > 80 && paper[i] >= 1) {
            money[i] += 8000;
            sum+=8000;
            count[i]++;
        }
        if (endGrade[i] > 85 && classGrade[i] >= 80) {
            money[i] += 4000;
            sum+=4000;
            count[i]++;
        }
        if (endGrade[i] > 90) {
            money[i] += 2000;
            sum+=2000;
            count[i]++;
        }
        if (endGrade[i] > 85 && isWest[i] == "Y") {
            money[i] += 1000;
            sum+=1000;
            count[i]++;
        }
        if (endGrade[i] > 80 && isCadre[i] == "Y") {
            money[i] += 850;
            sum+=850;
            count[i]++;
        }
    }
    vector<pair<int, int>> moneyWithIndex;
    for (int i = 0; i < n; i++) {
        moneyWithIndex.push_back({money[i], i});
    }
    sort(moneyWithIndex.begin(), moneyWithIndex.end(), [&](pair<int, int> &a, pair<int, int> &b)->bool{
        if (a.first == b.first) return a.second > b.second;
        else return a.first < b.first;
    });
    int target = moneyWithIndex.back().second;
    cout << name[target] << endl;
    cout << money[target] << endl;
    cout << sum << endl;
    return 0;

}
2022/5/4 00:54
加载中...