Submission #300395

#TimeUsernameProblemLanguageResultExecution timeMemory
300395kevleeCarnival Tickets (IOI20_tickets)C++17
27 / 100
951 ms79112 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) { 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/2 - 1) { auto tmp = pq[a[j].se].top(); pq[a[j].se].pop(); sum -= x[a[j].se][tmp.se-m+k]; 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-m+k] != -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...