답안 #434652

# 제출 시각 아이디 문제 언어 결과 실행 시간 메모리
434652 2021-06-21T13:55:42 Z yuto1115 카니발 티켓 (IOI20_tickets) C++17
100 / 100
894 ms 63232 KB
#include "tickets.h"
#include <bits/stdc++.h>
#define rep(i, n) for(ll i = 0; i < ll(n); i++)
#define rep2(i, s, n) for(ll i = ll(s); i < ll(n); i++)
#define rrep(i, n) for(ll i = ll(n)-1; i >= 0; i--)
#define pb push_back
#define eb emplace_back
#define all(a) a.begin(),a.end()
#define rall(a) a.rbegin(),a.rend()
using namespace std;
using ll = long long;
using P = pair<int, int>;
using vi = vector<int>;
using vvi = vector<vi>;
using vl = vector<ll>;
using vvl = vector<vl>;
using vp = vector<P>;
using vvp = vector<vp>;
using vb = vector<bool>;
using vvb = vector<vb>;
using vs = vector<string>;
const int inf = 1001001001;
const ll linf = 1001001001001001001;

template<class T>
bool chmin(T &a, T b) {
    if (a > b) {
        a = b;
        return true;
    }
    return false;
}

template<class T>
bool chmax(T &a, T b) {
    if (a < b) {
        a = b;
        return true;
    }
    return false;
}

ll find_maximum(int k, vvi x) {
    int n = x.size();
    int m = x[0].size();
    ll ans = 0;
    // 0 -> minus, 1 -> plus
    vvi alloc(n, vi(m, -1));
    vi cnt(n);
    vp ls;
    rep(i, n) {
        rep(j, k) {
            ans -= x[i][j];
            ls.eb(x[i][j] + x[i][m - k + j], i);
        }
    }
    sort(rall(ls));
    rep(i, n * k / 2) {
        ans += ls[i].first;
        cnt[ls[i].second]++;
    }
    rep(i, n) {
        rep(j, k - cnt[i]) alloc[i][j] = 0;
        rep(j, cnt[i]) alloc[i][m - 1 - j] = 1;
    }
//    rep(i,n) rep(j,m) cerr << alloc[i][j] << (j == m-1 ? '\n' : ' ');
//    cerr << endl;
    auto proc = [&](int &i) {
        int pi = i;
        i = (i < k - 1 ? i + 1 : 0);
        return pi;
    };
    int now = 0;
    rep(i, n) {
        int it = now;
        rep(j, m) {
            if (alloc[i][j] == -1) continue;
            if (alloc[i][j] == 0) proc(now);
            alloc[i][j] = proc(it);
        }
    }
    assert(now == 0);
    allocate_tickets(alloc);
    return ans;
}
# 결과 실행 시간 메모리 Grader output
1 Correct 1 ms 204 KB Output is correct
2 Correct 0 ms 204 KB Output is correct
3 Correct 0 ms 204 KB Output is correct
4 Correct 1 ms 204 KB Output is correct
5 Correct 1 ms 332 KB Output is correct
6 Correct 2 ms 716 KB Output is correct
# 결과 실행 시간 메모리 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 2 ms 332 KB Output is correct
5 Correct 29 ms 2372 KB Output is correct
6 Correct 618 ms 51396 KB Output is correct
# 결과 실행 시간 메모리 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 2 ms 460 KB Output is correct
5 Correct 27 ms 2556 KB Output is correct
6 Correct 566 ms 53900 KB Output is correct
7 Correct 615 ms 56804 KB Output is correct
8 Correct 3 ms 588 KB Output is correct
9 Correct 1 ms 204 KB Output is correct
10 Correct 1 ms 204 KB Output is correct
11 Correct 1 ms 204 KB Output is correct
12 Correct 7 ms 852 KB Output is correct
13 Correct 20 ms 2372 KB Output is correct
14 Correct 20 ms 2348 KB Output is correct
15 Correct 585 ms 59224 KB Output is correct
# 결과 실행 시간 메모리 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 3 ms 460 KB Output is correct
5 Correct 33 ms 2736 KB Output is correct
6 Correct 6 ms 716 KB Output is correct
7 Correct 6 ms 852 KB Output is correct
8 Correct 841 ms 62164 KB Output is correct
9 Correct 782 ms 58084 KB Output is correct
10 Correct 816 ms 58104 KB Output is correct
11 Correct 894 ms 62140 KB Output is correct
# 결과 실행 시간 메모리 Grader output
1 Correct 1 ms 248 KB Output is correct
2 Correct 2 ms 332 KB Output is correct
3 Correct 2 ms 332 KB Output is correct
4 Correct 3 ms 460 KB Output is correct
5 Correct 3 ms 460 KB Output is correct
6 Correct 3 ms 460 KB Output is correct
7 Correct 1 ms 204 KB Output is correct
8 Correct 1 ms 332 KB Output is correct
9 Correct 3 ms 460 KB Output is correct
10 Correct 3 ms 460 KB Output is correct
11 Correct 3 ms 460 KB Output is correct
12 Correct 3 ms 460 KB Output is correct
# 결과 실행 시간 메모리 Grader output
1 Correct 1 ms 248 KB Output is correct
2 Correct 2 ms 332 KB Output is correct
3 Correct 2 ms 332 KB Output is correct
4 Correct 3 ms 460 KB Output is correct
5 Correct 3 ms 460 KB Output is correct
6 Correct 3 ms 460 KB Output is correct
7 Correct 1 ms 204 KB Output is correct
8 Correct 1 ms 332 KB Output is correct
9 Correct 3 ms 460 KB Output is correct
10 Correct 3 ms 460 KB Output is correct
11 Correct 3 ms 460 KB Output is correct
12 Correct 3 ms 460 KB Output is correct
13 Correct 26 ms 2592 KB Output is correct
14 Correct 27 ms 2628 KB Output is correct
15 Correct 30 ms 2756 KB Output is correct
16 Correct 34 ms 3080 KB Output is correct
17 Correct 2 ms 332 KB Output is correct
18 Correct 3 ms 560 KB Output is correct
19 Correct 1 ms 332 KB Output is correct
20 Correct 28 ms 2752 KB Output is correct
21 Correct 30 ms 2748 KB Output is correct
22 Correct 30 ms 2936 KB Output is correct
23 Correct 32 ms 3000 KB Output is correct
# 결과 실행 시간 메모리 Grader output
1 Correct 1 ms 204 KB Output is correct
2 Correct 0 ms 204 KB Output is correct
3 Correct 0 ms 204 KB Output is correct
4 Correct 1 ms 204 KB Output is correct
5 Correct 1 ms 332 KB Output is correct
6 Correct 2 ms 716 KB Output is correct
7 Correct 1 ms 204 KB Output is correct
8 Correct 1 ms 204 KB Output is correct
9 Correct 1 ms 204 KB Output is correct
10 Correct 2 ms 332 KB Output is correct
11 Correct 29 ms 2372 KB Output is correct
12 Correct 618 ms 51396 KB Output is correct
13 Correct 1 ms 204 KB Output is correct
14 Correct 1 ms 204 KB Output is correct
15 Correct 1 ms 204 KB Output is correct
16 Correct 2 ms 460 KB Output is correct
17 Correct 27 ms 2556 KB Output is correct
18 Correct 566 ms 53900 KB Output is correct
19 Correct 615 ms 56804 KB Output is correct
20 Correct 3 ms 588 KB Output is correct
21 Correct 1 ms 204 KB Output is correct
22 Correct 1 ms 204 KB Output is correct
23 Correct 1 ms 204 KB Output is correct
24 Correct 7 ms 852 KB Output is correct
25 Correct 20 ms 2372 KB Output is correct
26 Correct 20 ms 2348 KB Output is correct
27 Correct 585 ms 59224 KB Output is correct
28 Correct 1 ms 204 KB Output is correct
29 Correct 1 ms 204 KB Output is correct
30 Correct 1 ms 204 KB Output is correct
31 Correct 3 ms 460 KB Output is correct
32 Correct 33 ms 2736 KB Output is correct
33 Correct 6 ms 716 KB Output is correct
34 Correct 6 ms 852 KB Output is correct
35 Correct 841 ms 62164 KB Output is correct
36 Correct 782 ms 58084 KB Output is correct
37 Correct 816 ms 58104 KB Output is correct
38 Correct 894 ms 62140 KB Output is correct
39 Correct 1 ms 248 KB Output is correct
40 Correct 2 ms 332 KB Output is correct
41 Correct 2 ms 332 KB Output is correct
42 Correct 3 ms 460 KB Output is correct
43 Correct 3 ms 460 KB Output is correct
44 Correct 3 ms 460 KB Output is correct
45 Correct 1 ms 204 KB Output is correct
46 Correct 1 ms 332 KB Output is correct
47 Correct 3 ms 460 KB Output is correct
48 Correct 3 ms 460 KB Output is correct
49 Correct 3 ms 460 KB Output is correct
50 Correct 3 ms 460 KB Output is correct
51 Correct 26 ms 2592 KB Output is correct
52 Correct 27 ms 2628 KB Output is correct
53 Correct 30 ms 2756 KB Output is correct
54 Correct 34 ms 3080 KB Output is correct
55 Correct 2 ms 332 KB Output is correct
56 Correct 3 ms 560 KB Output is correct
57 Correct 1 ms 332 KB Output is correct
58 Correct 28 ms 2752 KB Output is correct
59 Correct 30 ms 2748 KB Output is correct
60 Correct 30 ms 2936 KB Output is correct
61 Correct 32 ms 3000 KB Output is correct
62 Correct 70 ms 6420 KB Output is correct
63 Correct 71 ms 6372 KB Output is correct
64 Correct 92 ms 7592 KB Output is correct
65 Correct 358 ms 24816 KB Output is correct
66 Correct 377 ms 28764 KB Output is correct
67 Correct 7 ms 980 KB Output is correct
68 Correct 6 ms 844 KB Output is correct
69 Correct 627 ms 52608 KB Output is correct
70 Correct 759 ms 54540 KB Output is correct
71 Correct 867 ms 63232 KB Output is correct
72 Correct 755 ms 60296 KB Output is correct
73 Correct 817 ms 59928 KB Output is correct
74 Correct 660 ms 53128 KB Output is correct
75 Correct 776 ms 52884 KB Output is correct