Submission #300505

#TimeUsernameProblemLanguageResultExecution timeMemory
300505kevleeCarnival Tickets (IOI20_tickets)C++17
0 / 100
1 ms512 KiB
#include "tickets.h" #include <bits/stdc++.h> using namespace std; #define pb push_back #define mod 1000000007 #define inf 1000000000 #define ll long long #define fi first #define se second #define pii pair<int, int> #define pll pair<ll, ll> #define vi vector<int> #define vl vector<ll> #define vp vector<pii> #define SET(a, b) memset(a, b, sizeof(a)) #define all(x) (x).begin(), (x).end() #define FOR(i, a, b) for (int i = (a); i <= (b); i++) #define FORD(i, a, b) for (int i = (a); i >= (b); i--) priority_queue <pll> pq[1505]; bool used[1505][1505]; pll a[1505]; long long find_maximum(int k, vector<vi> x) { int n = x.size(); int m = x[0].size(); vector <vi> answer; vi row(m, -1); FOR(i, 0, n-1) { answer.pb(row); } ll sum = 0; FOR(i, 0, n-1) { FOR(j, m-k, m-1) { sum += x[i][j]; pq[i].push({-x[i][j] - x[i][j-m+k], -j}); } } FOR(i, 0, k-1) { FOR(j, 0, n-1) { a[j] = {pq[j].top().fi, j}; } sort(a, a+n); reverse(a, a+n); FOR(j, 0, n-1) a[j].se *= -1; FOR(j, 0, n/2 - 1) { auto tmp = pq[a[j].se].top(); tmp.se *= -1; pq[a[j].se].pop(); //sum -= x[a[j].se][tmp.se-m+k]; sum += tmp.fi; used[a[j].se][i] = true; answer[a[j].se][tmp.se-m+k] = i; } } FOR(i, 0, n-1) { int cur = 0; FORD(j, m-1, m-k) { if (answer[i][j] != -1) continue; while (cur < k && used[i][cur]) cur++; if (cur >= k) break; //sum += x[i][j]; answer[i][j] = cur; cur++; } } allocate_tickets(answer); return sum; }
#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...