Submission #207606

# Submission time Handle Problem Language Result Execution time Memory
207606 2020-03-08T05:52:56 Z dolphingarlic Poi (IOI09_poi) C++14
100 / 100
301 ms 16120 KB
#include <bits/stdc++.h>
#pragma GCC Optimize("O3")
using namespace std;

#define MAX_N 2000
#define MAX_T 2000

vector<int> solved[MAX_N];
int points[MAX_T];
int score[MAX_N];

bool poiLess(int x, int y) {
    if (score[x] > score[y])
        return true;
    else if (score[x] == score[y]) {
        if (solved[x].size() > solved[y].size())
            return true;
        else if (solved[x].size() == solved[y].size())
            return x < y;
        else
            return false;
    } else
        return false;
}

int main() {
    ios_base::sync_with_stdio(false);
    cin.tie(0);

    int n, t, p;

    cin >> n >> t >> p;

    p--;

    memset(points, 0, sizeof(points));

    for (int i = 0; i < n; i++) {
        solved[i].reserve(n);
        int x;
        for (int j = 0; j < t; j++) {
            cin >> x;
            if (x == 1)
                solved[i].push_back(j);
            else
                points[j]++;
        }
    }

    vector<int> sortedIds;
    sortedIds.reserve(n);
    for (int i = 0; i < n; i++) {
        score[i] = 0;
        for (unsigned int j = 0; j < solved[i].size(); j++)
            score[i] += points[solved[i][j]];
        sortedIds.push_back(i);
    }

    sort(sortedIds.begin(), sortedIds.end(), poiLess);

    for (int i = 0; i < n; i++)
        if (sortedIds[i] == p) {
            cout << score[p] << ' ' << (i + 1) << '\n';
            return 0;
        }

    return 0;
}

Compilation message

poi.cpp:2:0: warning: ignoring #pragma GCC Optimize [-Wunknown-pragmas]
 #pragma GCC Optimize("O3")
# Verdict Execution time Memory Grader output
1 Correct 5 ms 376 KB Output is correct
2 Correct 5 ms 376 KB Output is correct
3 Correct 5 ms 376 KB Output is correct
4 Correct 5 ms 376 KB Output is correct
5 Correct 5 ms 376 KB Output is correct
6 Correct 5 ms 376 KB Output is correct
7 Correct 6 ms 376 KB Output is correct
8 Correct 5 ms 376 KB Output is correct
9 Correct 6 ms 504 KB Output is correct
10 Correct 7 ms 504 KB Output is correct
11 Correct 13 ms 760 KB Output is correct
12 Correct 20 ms 1400 KB Output is correct
13 Correct 43 ms 2296 KB Output is correct
14 Correct 62 ms 4472 KB Output is correct
15 Correct 110 ms 6008 KB Output is correct
16 Correct 121 ms 7032 KB Output is correct
17 Correct 165 ms 9468 KB Output is correct
18 Correct 192 ms 11704 KB Output is correct
19 Correct 249 ms 15480 KB Output is correct
20 Correct 301 ms 16120 KB Output is correct