Submission #1288875

#TimeUsernameProblemLanguageResultExecution timeMemory
1288875NonozeCarnival Tickets (IOI20_tickets)C++20
27 / 100
314 ms69140 KiB
#include "tickets.h" #include <bits/stdc++.h> #define fi first #define se second #define sz(x) (int)x.size() #define cmin(a, b) a=min(a, b) #define cmax(a, b) a=max(a, b) #define all(x) (x).begin(),(x).end() #define rall(x) (x).rbegin(),(x).rend() #define pb push_back #define int long long using namespace std; int n, m, k; vector<vector<int>> a; int find_maximum(signed K, vector<vector<signed>> x) { n=sz(x), m=sz(x[0]), k=K; a.resize(n, vector<int>(m)); for (int i=0; i<n; i++) for (int j=0; j<m; j++) a[i][j]=x[i][j]; int res=0; vector<vector<signed>> ans(n, vector<signed>(m, -1)); while (k--) { vector<int> small(n), big(n); for (int i=0; i<n; i++) { small[i]=a[i][0], big[i]=a[i][0]; if (ans[i][0]!=-1) small[i]=INT_MAX, big[i]=0; for (int j=1; j<m; j++) if (ans[i][j]==-1) cmin(small[i], a[i][j]), cmax(big[i], a[i][j]); } vector<bool> side(n, 0); for (int i=n/2; i<n; i++) side[i]=1, res+=big[i]; for (int i=0; i<n/2; i++) res-=small[i]; while (1) { int bestleft=-1, bestright=-1; for (int i=0; i<n; i++) { if (!side[i]) { if (bestleft==-1 || big[i]+small[i]>big[bestleft]+small[bestleft]) bestleft=i; } else { if (bestright==-1 || big[i]+small[i]<big[bestright]+small[bestright]) bestright=i; } } if (big[bestleft]+small[bestleft]-big[bestright]-small[bestright]>0) { side[bestleft]=1, side[bestright]=0; res+=big[bestleft]+small[bestleft]-big[bestright]-small[bestright]; } else break; } for (int i=0; i<n; i++) { int val=small[i]; if (side[i]) val=big[i]; for (int j=0; j<m; j++) { if (ans[i][j]==-1 && a[i][j]==val) { ans[i][j]=k; break; } } } } allocate_tickets(ans); return res; }
#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...