Submission #835963

#TimeUsernameProblemLanguageResultExecution timeMemory
835963maomao90Carnival Tickets (IOI20_tickets)C++17
27 / 100
403 ms60228 KiB
// I can do all things through Christ who strengthens me // Philippians 4:13 #include "tickets.h" #include <bits/stdc++.h> using namespace std; #define REP(i, j, k) for (int i = j; i < (k); i++) #define RREP(i, j, k) for (int i = j; i >= (k); i--) template <class T> inline bool mnto(T &a, const T b) {return a > b ? a = b, 1 : 0;} template <class T> inline bool mxto(T &a, const T b) {return a < b ? a = b, 1 : 0;} typedef long long ll; typedef long double ld; #define FI first #define SE second typedef pair<int, int> ii; typedef pair<ll, ll> pll; #define ALL(x) x.begin(), x.end() #define SZ(x) (int) x.size() #define pb push_back typedef vector<int> vi; typedef vector<ll> vll; typedef vector<ii> vii; typedef tuple<int, int, int> iii; #ifndef DEBUG #define cerr if (0) cerr #endif const int INF = 1000000005; const ll LINF = 1000000000000000005; const int MAXN = 1505; int n, m, k; vector<vi> x, s; int l[MAXN], r[MAXN]; ii diff[MAXN]; ll ans; ll find_maximum(int _k, vector<vi> _x) { k = _k; x = _x; n = SZ(x); m = SZ(x[0]); s = vector<vi>(n, vi(m, -1)); REP (i, 0, n) { l[i] = 0, r[i] = m - 1; } REP (z, 0, k) { REP (i, 0, n) { ans += x[i][r[i]]; diff[i] = {x[i][r[i]] + x[i][l[i]], i}; s[i][r[i]--] = z; } sort(diff, diff + n); REP (i, 0, n / 2) { ans -= diff[i].FI; s[diff[i].SE][++r[diff[i].SE]] = -1; s[diff[i].SE][l[diff[i].SE]++] = z; } } allocate_tickets(s); return ans; }
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...