Submission #428993

# Submission time Handle Problem Language Result Execution time Memory
428993 2021-06-15T16:16:21 Z ACmachine Carnival Tickets (IOI20_tickets) C++17
25 / 100
1304 ms 99460 KB
#include "tickets.h"
#include <bits/stdc++.h>
using namespace std;
#define FOR(i, j, k, l) for(int i = (j); i < (k); i += (l))
#define FORD(i, j, k, l) for(int i = (j); i >= (k); i -= (l))
#define REP(i, n) FOR(i, 0, n, 1)
#define REPD(i, n) FORD(i, n, 0, 1)
typedef long long ll;
#define pb push_back
long long find_maximum(int k, vector<vector<int>> x) {
	int n = x.size();
	int m = x[0].size();
    vector<array<int, 3>> tm;
    REP(i, n){
        REP(j, k){
            tm.pb({x[i][j], i, j});
        }
    }
    sort(tm.begin(), tm.end());
    vector<int> upper(n);
    vector<vector<array<int, 2>>> rows(n); 
    ll sum_up = 0;
    ll sum_down = 0;
    REP(i, tm.size() / 2){
        upper[tm[i][1]] = tm[i][2] + 1;
        rows[tm[i][1]].pb({tm[i][0], tm[i][2]});
        sum_down += tm[i][0];
    }
    REP(i, n){
        REP(j, k - upper[i]){
            rows[i].pb({x[i][m - 1 - j], m - 1 - j});
            sum_up += x[i][m - 1 - j];
        }
    }
    vector<int> cnts = upper; // cnt smaller available
	vector<vector<int>> answer(n, vector<int>(m, -1));
    vector<int> sorted(n);
    iota(sorted.begin(), sorted.end(), 0);
    auto cmp = [&](int f, int s){
        return cnts[f] > cnts[s];
    };
    REP(i, k){
        sort(sorted.begin(), sorted.end(), cmp);
        REP(j, n / 2){
            cnts[sorted[j]]--;
            int row = sorted[j]; int col = rows[row][cnts[row]][1];
            answer[row][col] = i;
        }
        FOR(j, n / 2, n, 1){
            int row = sorted[j]; 
            int smaller_taken = upper[row] - cnts[row];
            int col = k - 1 - i + smaller_taken;
            col = rows[row][col][1];
            answer[row][col] = i;
        }
    }
	
	allocate_tickets(answer);
	return sum_up - sum_down;
}

Compilation message

tickets.cpp: In function 'long long int find_maximum(int, std::vector<std::vector<int> >)':
tickets.cpp:4:44: warning: comparison of integer expressions of different signedness: 'int' and 'std::vector<std::array<int, 3> >::size_type' {aka 'long unsigned int'} [-Wsign-compare]
    4 | #define FOR(i, j, k, l) for(int i = (j); i < (k); i += (l))
      |                                            ^
tickets.cpp:6:19: note: in expansion of macro 'FOR'
    6 | #define REP(i, n) FOR(i, 0, n, 1)
      |                   ^~~
tickets.cpp:24:5: note: in expansion of macro 'REP'
   24 |     REP(i, tm.size() / 2){
      |     ^~~
# Verdict Execution time Memory Grader output
1 Correct 1 ms 204 KB Output is correct
2 Correct 1 ms 204 KB Output is correct
3 Correct 1 ms 204 KB Output is correct
4 Correct 1 ms 204 KB Output is correct
5 Correct 1 ms 288 KB Output is correct
6 Correct 2 ms 716 KB Output is correct
# Verdict Execution time Memory Grader output
1 Correct 1 ms 204 KB Output is correct
2 Incorrect 1 ms 204 KB Contestant returned 2307346107 while correct return value is 2727881086.
3 Halted 0 ms 0 KB -
# Verdict Execution time Memory Grader output
1 Correct 1 ms 204 KB Output is correct
2 Correct 1 ms 204 KB Output is correct
3 Incorrect 1 ms 204 KB Contestant returned 23 while correct return value is 25.
4 Halted 0 ms 0 KB -
# Verdict Execution time Memory Grader output
1 Correct 1 ms 204 KB Output is correct
2 Correct 1 ms 204 KB Output is correct
3 Correct 1 ms 288 KB Output is correct
4 Correct 4 ms 588 KB Output is correct
5 Correct 42 ms 5284 KB Output is correct
6 Correct 7 ms 1036 KB Output is correct
7 Correct 9 ms 1420 KB Output is correct
8 Correct 1304 ms 99460 KB Output is correct
9 Correct 1102 ms 96872 KB Output is correct
10 Correct 1113 ms 94964 KB Output is correct
11 Correct 1170 ms 99052 KB Output is correct
# Verdict Execution time Memory Grader output
1 Correct 1 ms 204 KB Output is correct
2 Incorrect 3 ms 460 KB Contestant returned 39141745836 while correct return value is 39376297182.
3 Halted 0 ms 0 KB -
# Verdict Execution time Memory Grader output
1 Correct 1 ms 204 KB Output is correct
2 Incorrect 3 ms 460 KB Contestant returned 39141745836 while correct return value is 39376297182.
3 Halted 0 ms 0 KB -
# Verdict Execution time Memory Grader output
1 Correct 1 ms 204 KB Output is correct
2 Correct 1 ms 204 KB Output is correct
3 Correct 1 ms 204 KB Output is correct
4 Correct 1 ms 204 KB Output is correct
5 Correct 1 ms 288 KB Output is correct
6 Correct 2 ms 716 KB Output is correct
7 Correct 1 ms 204 KB Output is correct
8 Incorrect 1 ms 204 KB Contestant returned 2307346107 while correct return value is 2727881086.
9 Halted 0 ms 0 KB -