为什么全是RE?return后面是0啊
查看原帖
为什么全是RE?return后面是0啊
930386
ydydt楼主2023/8/20 11:00
#include <iostream>
#include <vector>
#include <algorithm>
#include <unordered_map>
#include <set>

struct Submission {
    int hour, minute, second;
    char problem;
    std::string team;
    std::string verdict;
};

bool compareSubmissions(const Submission& s1, const Submission& s2) {
    if (s1.hour == s2.hour) {
        if (s1.minute == s2.minute) {
            if (s1.second == s2.second) {
                if (s1.team == s2.team) {
                    return s1.problem < s2.problem;
                }
                return s1.team < s2.team;
            }
            return s1.second < s2.second;
        }
        return s1.minute < s2.minute;
    }
    return s1.hour < s2.hour;
}

int main() {
    int n, m, k;
    std::cin >> n >> m >> k;

    std::vector<Submission> submissions(k);
    for (int i = 0; i < k; ++i) {
        std::string time, problem, team, verdict;
        std::cin >> time >> problem >> team >> verdict;

        int hour = stoi(time.substr(0, 2));
        int minute = stoi(time.substr(3, 2));
        int second = stoi(time.substr(6, 2));

        submissions[i] = {hour, minute, second, problem[0], team, verdict};
    }

    std::sort(submissions.begin(), submissions.end(), compareSubmissions);

    std::unordered_map<std::string, std::set<char>> acceptedProblems;
    std::unordered_map<std::string, int> penalties;

    for (const Submission& submission : submissions) {
        if (submission.verdict == "Accepted") {
            acceptedProblems[submission.team].insert(submission.problem);
        }

        if (acceptedProblems.find(submission.team) == acceptedProblems.end()) {
            penalties[submission.team] += 20;
        }
    }

    std::vector<std::string> rollingBoard;
    for (const Submission& submission : submissions) {
        if (submission.hour >= 4) {
            break;
        }

        if (acceptedProblems[submission.team].find(submission.problem) != acceptedProblems[submission.team].end()) {
            acceptedProblems[submission.team].erase(submission.problem);
            if (acceptedProblems[submission.team].empty()) {
                acceptedProblems.erase(submission.team);
            }

            penalties[submission.team] += (submission.hour * 60) + submission.minute;

            std::vector<std::pair<int, std::string>> rankings;

            for (const auto& penalty : penalties) {
                rankings.push_back({penalty.second, penalty.first});
            }

            std::sort(rankings.begin(), rankings.end());

            int rank = 1;
            for (int i = rankings.size() - 1; i >= 0; --i) {
                if (rankings[i].second == submission.team) {
                    break;
                }
                rank++;
            }

            if (rank <= m) {
                rollingBoard.push_back(submission.team);
            }
        } else {
            penalties[submission.team] += 20;
        }
    }

    for (const std::string& team : rollingBoard) {
        std::cout << team << std::endl;
    }

    return 0;
}

下面的C++字符不是程序了啊

#inclue<iostream>
using namespace std;
int main(){
	cout<<"反正我没看出啥问题"<<endl;
   return 0;
}
2023/8/20 11:00
加载中...