Submission #1214749

#TimeUsernameProblemLanguageResultExecution timeMemory
121474912baaterPoi (IOI09_poi)C++20
100 / 100
357 ms9644 KiB
#include <iostream>
#include <vector>

using namespace std;

struct person {
    int points = 0;
    int solved = 0;
    int id = 0;
    bool operator<(person const& other) const {
        if(points == other.points && solved == other.solved) return id < other.id;
        if(points == other.points) return solved > other.solved;
        return points > other.points;
    }
};


int main() {
    int n, t, p; cin >> n >> t >> p;
    vector<vector<int>> solved(n+1);
    vector<int> tasks(t+1,0);
    vector<person> people;
    int a;
    for(int i = 1; i <= n; i++) {
        for(int j = 0; j < t; j++) {
            cin >> a;
            if(a) {
                solved[i].push_back(j);
                tasks[j]++;
            }
        }
    }

    for(int i = 1; i <= n; i++) {
        int points = 0;
        for(int j = 0; j < solved[i].size(); j++) {
            points += n - tasks[solved[i][j]];
        }
        people.push_back({points,(int) solved[i].size(),i});
    }
    sort(people.begin(),people.end());
    for (int i = 0; i < n; i++) {
        if (people[i].id == p) {
            cout << people[i].points << " " << i+1 << "\n";
            return 0;
        }
    }
    return 0;
}
#Verdict Execution timeMemoryGrader output
Fetching results...