Submission #487637

# Submission time Handle Problem Language Result Execution time Memory
487637 2021-11-16T10:28:28 Z alextodoran Carnival Tickets (IOI20_tickets) C++17
41 / 100
539 ms 73272 KB
/**
 ____ ____ ____ ____ ____
||a |||t |||o |||d |||o ||
||__|||__|||__|||__|||__||
|/__\|/__\|/__\|/__\|/__\|

**/

#include <bits/stdc++.h>
#include "tickets.h"

using namespace std;

typedef long long ll;

void allocate_tickets (vector <vector <int>> sol);

ll find_maximum (int k, vector <vector <int>> x)
{
    int n = (int) x.size();
    int m = (int) x[0].size();
    int t = m - k;

    vector <vector <int>> sum (n, vector <int> (m - t + 1));
    for(int i = 0; i < n; i++)
    {
        sum[i][0] = 0;
        for(int j = t; j < m; j++)
            sum[i][0] += x[i][j];
        for(int j = 1; j < m - t + 1; j++)
            sum[i][j] = sum[i][j - 1] - x[i][j - 1] - x[i][j + t - 1];
    }

    vector <int> pos (n);
    priority_queue <pair <int, int>> q;
    for(int i = 0; i < n; i++)
    {
        pos[i] = 0;
        if(pos[i] + 1 < (int) sum[i].size())
            q.push({sum[i][pos[i] + 1] - sum[i][pos[i]], i});
    }

    for(int it = 1; it <= k * n / 2; it++)
    {
        int i = q.top().second;
        q.pop();

        pos[i]++;
        if(pos[i] + 1 < (int) sum[i].size())
            q.push({sum[i][pos[i] + 1] - sum[i][pos[i]], i});
    }

    ll answer = 0;
    for(int i = 0; i < n; i++)
        answer += sum[i][pos[i]];

    vector <int> A (n);
    vector <int> B (n);

    for(int i = 0; i < n; i++)
    {
        A[i] = pos[i] - 1;
        B[i] = pos[i] + t;
    }

    vector <vector <int>> sol (n, vector <int> (m, -1));

    vector <int> p (n);
    for(int i = 0; i < n; i++)
        p[i] = i;

    for(int step = 0; step < k; step++)
    {
        sort(p.begin(), p.end(), [&] (const int &i, const int &j)
        {
            return A[i] > A[j];
        });
        for(int i = 0; i < n / 2; i++)
        {
            sol[p[i]][A[p[i]]] = step;
            A[p[i]]--;
        }
        for(int i = n / 2; i < n; i++)
        {
            sol[p[i]][B[p[i]]] = step;
            B[p[i]]++;
        }
    }

    allocate_tickets(sol);

    return answer;
}
# Verdict Execution time Memory Grader output
1 Correct 1 ms 208 KB Output is correct
2 Correct 0 ms 292 KB Output is correct
3 Correct 1 ms 208 KB Output is correct
4 Correct 1 ms 208 KB Output is correct
5 Correct 1 ms 296 KB Output is correct
6 Correct 1 ms 720 KB Output is correct
# Verdict Execution time Memory Grader output
1 Correct 1 ms 208 KB Output is correct
2 Correct 0 ms 208 KB Output is correct
3 Correct 1 ms 208 KB Output is correct
4 Correct 2 ms 464 KB Output is correct
5 Correct 20 ms 3192 KB Output is correct
6 Correct 539 ms 73272 KB Output is correct
# Verdict Execution time Memory Grader output
1 Correct 0 ms 208 KB Output is correct
2 Correct 1 ms 208 KB Output is correct
3 Correct 1 ms 208 KB Output is correct
4 Correct 2 ms 464 KB Output is correct
5 Correct 20 ms 2712 KB Output is correct
6 Correct 439 ms 61180 KB Output is correct
7 Correct 459 ms 63004 KB Output is correct
8 Correct 3 ms 592 KB Output is correct
9 Correct 0 ms 208 KB Output is correct
10 Correct 0 ms 208 KB Output is correct
11 Correct 0 ms 208 KB Output is correct
12 Correct 5 ms 976 KB Output is correct
13 Correct 16 ms 2344 KB Output is correct
14 Correct 16 ms 2384 KB Output is correct
15 Correct 471 ms 64796 KB Output is correct
# Verdict Execution time Memory Grader output
1 Correct 1 ms 208 KB Output is correct
2 Correct 0 ms 208 KB Output is correct
3 Incorrect 1 ms 208 KB Contestant returned 24057831018 but the tickets gives a total value of 6877961834
4 Halted 0 ms 0 KB -
# Verdict Execution time Memory Grader output
1 Correct 0 ms 208 KB Output is correct
2 Correct 2 ms 464 KB Output is correct
3 Incorrect 2 ms 464 KB Contestant returned 191909121109 but the tickets gives a total value of 32995331157
4 Halted 0 ms 0 KB -
# Verdict Execution time Memory Grader output
1 Correct 0 ms 208 KB Output is correct
2 Correct 2 ms 464 KB Output is correct
3 Incorrect 2 ms 464 KB Contestant returned 191909121109 but the tickets gives a total value of 32995331157
4 Halted 0 ms 0 KB -
# Verdict Execution time Memory Grader output
1 Correct 1 ms 208 KB Output is correct
2 Correct 0 ms 292 KB Output is correct
3 Correct 1 ms 208 KB Output is correct
4 Correct 1 ms 208 KB Output is correct
5 Correct 1 ms 296 KB Output is correct
6 Correct 1 ms 720 KB Output is correct
7 Correct 1 ms 208 KB Output is correct
8 Correct 0 ms 208 KB Output is correct
9 Correct 1 ms 208 KB Output is correct
10 Correct 2 ms 464 KB Output is correct
11 Correct 20 ms 3192 KB Output is correct
12 Correct 539 ms 73272 KB Output is correct
13 Correct 0 ms 208 KB Output is correct
14 Correct 1 ms 208 KB Output is correct
15 Correct 1 ms 208 KB Output is correct
16 Correct 2 ms 464 KB Output is correct
17 Correct 20 ms 2712 KB Output is correct
18 Correct 439 ms 61180 KB Output is correct
19 Correct 459 ms 63004 KB Output is correct
20 Correct 3 ms 592 KB Output is correct
21 Correct 0 ms 208 KB Output is correct
22 Correct 0 ms 208 KB Output is correct
23 Correct 0 ms 208 KB Output is correct
24 Correct 5 ms 976 KB Output is correct
25 Correct 16 ms 2344 KB Output is correct
26 Correct 16 ms 2384 KB Output is correct
27 Correct 471 ms 64796 KB Output is correct
28 Correct 1 ms 208 KB Output is correct
29 Correct 0 ms 208 KB Output is correct
30 Incorrect 1 ms 208 KB Contestant returned 24057831018 but the tickets gives a total value of 6877961834
31 Halted 0 ms 0 KB -