Submission #300169

#TimeUsernameProblemLanguageResultExecution timeMemory
300169model_codeCarnival Tickets (IOI20_tickets)C++17
100 / 100
1557 ms107564 KiB
// wy-full #include "tickets.h" #include <bits/stdc++.h> using namespace std; int sum[1505], f[1505], b[1505]; vector< vector<int> > ret; bool cmp(pair<long long, pair<int, int> > a, pair<long long, pair<int, int> > b) { if (a.first != b.first) return a.first > b.first; else return a.second < b.second; } long long find_maximum(int k, std::vector<std::vector<int>> d) { int c = d.size(); int s = d[0].size(); vector< pair<long long, pair<int, int> > > V; long long ans = 0; vector<vector<pair<int, int>>> d2; d2.resize(c); for (int i = 0; i < c; i++) { for (int j = 0; j < s; j++) { d2[i].push_back(make_pair(d[i][j], j)); } } for (int i = 0; i < c; i++) { sort(d2[i].begin(), d2[i].end()); for (int j = 0; j < k; j++) V.push_back(make_pair((long long)d2[i][s-j-1].first + d2[i][k-j-1].first, make_pair(i, j))); for (int j = 0; j < k; j++) ans -= d2[i][j].first; } sort(V.begin(), V.end(), cmp); for (int i = 0; i < c * k / 2; i++) { ans += V[i].first; sum[V[i].second.first] = V[i].second.second + 1; } ret.resize(c); for (int i = 0; i < c; i++) { vector<int> v; v.resize(s, -1); ret[i] = v; } for (int i = 0; i < k; i++) { vector< pair<int, int> > v; for (int j = 0; j < c; j++) v.push_back(make_pair(sum[j], j)); sort(v.begin(), v.end()); for (int j = 0; j < c/2; j++) { ret[v[j].second][d2[v[j].second][f[v[j].second]].second] = i; f[v[j].second]++; } for (int j = c/2; j < c; j++) { ret[v[j].second][d2[v[j].second][s-b[v[j].second]-1].second] = i; b[v[j].second]++; sum[v[j].second]--; } } allocate_tickets(ret); 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...