Submission #1225335

#TimeUsernameProblemLanguageResultExecution timeMemory
1225335NonozeCarnival Tickets (IOI20_tickets)C++20
27 / 100
390 ms69160 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]; vector<int> small(n), big(n); for (int i=0; i<n; i++) { small[i]=a[i][0], big[i]=a[i][0]; for (int j=1; j<m; j++) cmin(small[i], a[i][j]), cmax(big[i], a[i][j]); } int res=0; vector<vector<signed>> ans(n, vector<signed>(m, -1)); if (m==1) { ans.clear(), ans.resize(n, vector<signed>(m, 0)); allocate_tickets(ans); vector<int> b; for (int i=0; i<n; i++) b.pb(a[i][0]); sort(all(b)); for (int i=0; i<n/2; i++) res+=b[n-i-1]-b[i]; return res; } 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 (a[i][j]==val) { ans[i][j]=0; 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...