Submission #305818

#TimeUsernameProblemLanguageResultExecution timeMemory
3058184fectaCarnival Tickets (IOI20_tickets)C++14
0 / 100
20 ms27136 KiB
#include <bits/stdc++.h> #include <ext/pb_ds/assoc_container.hpp> #include <ext/pb_ds/tree_policy.hpp> using namespace std; using namespace __gnu_pbds; typedef tree<int, null_type, less<int>, rb_tree_tag, tree_order_statistics_node_update> ordered_set; #define ll long long #define int ll #define ld long double #define pii pair<int, int> #define f first #define s second #define readl(_s) getline(cin, (_s)); #define boost() cin.tie(0); cin.sync_with_stdio(0) const int MN = 1505; int n, m, tot; vector<vector<int32_t>> ans(1505, vector<int32_t> (1505, -1)); vector<int> rnd(1505); void allocate_tickets(vector<vector<int32_t>> s); ll find_maximum(int32_t k, vector<vector<int32_t>> a) { for (int i = 0; i < n; i++) { for (int j = m - k; j < m; j++) { //half max, half min, choose all max first then trade for loss. tot += a[i][j]; } } vector<pii> v; for (int i = 0; i < n; i++) { for (int j = 0; j < k; j++) { v.push_back({-a[i][j] - a[i][m - k + j], i}); //we will take the min from this row since it loses the least pts. } } sort(v.begin(), v.end(), greater<>()); for (int i = 0; i < n * k / 2; i++) tot += v[i].f, rnd[v[i].s]++; for (int i = 0; i < n; i++) { int id = 0; for (int j = 0; j < rnd[i]; j++) { ans[i][j] = id; id++; } for (int j = m - 1; j > m - 1 - (k - rnd[i]); j--) { ans[i][j] = id; id++; } } allocate_tickets(ans); return tot; }
#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...