Submission #1299784

#TimeUsernameProblemLanguageResultExecution timeMemory
1299784trandangquangCarnival Tickets (IOI20_tickets)C++20
100 / 100
489 ms62292 KiB
#include "tickets.h" #include<bits/stdc++.h> using namespace std; #define foru(i,a,b) for(int i=(a); i<=(b); ++i) #define ford(i,a,b) for(int i=(a); i>=(b); --i) #define rep(i,a) for(int i=0; i<(a); ++i) #define sz(a) (int)(a).size() #define all(a) (a).begin(),(a).end() #define bit(s,i) (((s)>>(i))&1) #define ii pair<int,int> #define vi vector<int> #define vii vector<ii> #define fi first #define se second #define ll long long #define eb emplace_back #define pb push_back #define __builtin_popcount __builtin_popcountll #define _ << " " << template <class X, class Y> bool maxi(X &x, Y y){return x<y?x=y,true:false;} template <class X, class Y> bool mini(X &x, Y y){return x>y?x=y,true:false;} ll find_maximum(int rnds, vector<vi> pts) { int n,m; n=sz(pts); m=sz(pts[0]); vii mi(n), ptsGain; vi usedL(n,0), usedR(n,0); ll res=0; rep(i,n){ mi[i]=ii(rnds,i); rep(j,rnds) res-=pts[i][j]; for(int j=rnds-1, k=m-1; j>=0; --j, --k){ ptsGain.pb({pts[i][j]+pts[i][k], i}); } } sort(all(ptsGain),greater<ii>()); rep(i,rnds*n/2){ res+=ptsGain[i].fi; int col=ptsGain[i].se; mi[col].fi--; } vector<vi> tickets(n, vi(m,-1)); rep(i,rnds){ sort(all(mi),greater<ii>()); rep(j,n/2){ int col=mi[j].se; tickets[col][usedL[col]]=i; usedL[col]++; --mi[j].fi; } foru(j,n/2,n-1){ int col=mi[j].se; tickets[col][m-usedR[col]-1]=i; usedR[col]++; } } allocate_tickets(tickets); 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...