Submission #569622

# Submission time Handle Problem Language Result Execution time Memory
569622 2022-05-27T14:56:51 Z stasico Poi (IOI09_poi) C++14
100 / 100
333 ms 22864 KB
#include <vector>
#include <cassert>
#include <algorithm>
#include <cstdio>
#include <iostream>
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()
{
    int n, t, p;
    scanf("%d %d %d", &n, &t, &p);
    assert(1 <= n && n <= MAX_N);
    assert(1 <= t && t <= MAX_T);
    assert(1 <= p && p <= n);
    p--;
    for (int i = 0; i < n; i++)
    {
        solved[i].reserve(n);
        int x;
        for (int j = 0; j < t; j++)
        {
            scanf("%d", &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) << endl;
            return 0;
        }
    assert(false);
    return 0;
}

Compilation message

poi.cpp: In function 'int main()':
poi.cpp:35:10: warning: ignoring return value of 'int scanf(const char*, ...)' declared with attribute 'warn_unused_result' [-Wunused-result]
   35 |     scanf("%d %d %d", &n, &t, &p);
      |     ~~~~~^~~~~~~~~~~~~~~~~~~~~~~~
poi.cpp:46:18: warning: ignoring return value of 'int scanf(const char*, ...)' declared with attribute 'warn_unused_result' [-Wunused-result]
   46 |             scanf("%d", &x);
      |             ~~~~~^~~~~~~~~~
# Verdict Execution time Memory Grader output
1 Correct 1 ms 340 KB Output is correct
2 Correct 1 ms 340 KB Output is correct
3 Correct 1 ms 340 KB Output is correct
4 Correct 1 ms 348 KB Output is correct
5 Correct 1 ms 348 KB Output is correct
6 Correct 1 ms 340 KB Output is correct
7 Correct 1 ms 340 KB Output is correct
8 Correct 1 ms 340 KB Output is correct
9 Correct 2 ms 360 KB Output is correct
10 Correct 3 ms 468 KB Output is correct
11 Correct 10 ms 852 KB Output is correct
12 Correct 25 ms 1656 KB Output is correct
13 Correct 51 ms 3336 KB Output is correct
14 Correct 73 ms 5920 KB Output is correct
15 Correct 123 ms 8908 KB Output is correct
16 Correct 130 ms 10092 KB Output is correct
17 Correct 205 ms 13764 KB Output is correct
18 Correct 208 ms 16972 KB Output is correct
19 Correct 272 ms 22148 KB Output is correct
20 Correct 333 ms 22864 KB Output is correct