Submission #791048

#TimeUsernameProblemLanguageResultExecution timeMemory
791048alexander707070카니발 티켓 (IOI20_tickets)C++14
0 / 100
1 ms596 KiB
#include<bits/stdc++.h> #include "tickets.h" #define MAXN 1507 using namespace std; const long long inf=1e15; int n,m,sol[MAXN],k,rest[MAXN],br,maxs,ind[MAXN],cnt0,cnt1,ans; pair<int,int> s[MAXN][MAXN]; vector<int> curr; vector< vector<int> > res; int used[MAXN],tim; vector<int> all; long long find_maximum(int K,vector< vector<int> > x){ n=int(x.size()); m=int(x[0].size()); k=K; res.resize(n); for(int i=0;i<n;i++){ res[i].resize(m); ind[i]=i; for(int f=0;f<m;f++){ s[i][f]={x[i][f],f}; res[i][f]=-1; all.push_back(x[i][f]); if(x[i][f]==0)sol[i]++; else rest[i]++; } sort(s[i],s[i]+m); } sort(all.begin(),all.end()); for(int i=0;i<n;i++){ for(int f=0;f<m;f++){ if(x[i][f]<=all[n*m/2-1]){ sol[f]++; ans-=x[i][f]; }else{ rest[f]++; ans+=x[i][f]; } } } for(int i=0;i<k;i++){ br=n/2; tim++; cnt0=cnt1=0; for(int f=0;f<n;f++){ if(sol[f]>0)cnt0++; if(rest[f]>0)cnt1++; } if((cnt0>=n/2 and cnt1>=n/2) or cnt0<n/2){ for(int f=0;f<n/2;f++){ maxs=n; for(int w=0;w<n;w++){ if(sol[w]>sol[maxs] and used[w]!=tim)maxs=w; } if(sol[maxs]==0)break; res[maxs][s[maxs][sol[maxs]-1].second]=i; sol[maxs]--; used[maxs]=tim; br--; } for(int f=0;f<n;f++){ if(used[f]!=tim){ res[f][s[f][m-rest[f]].second]=i; rest[f]--; } } }else{ for(int f=0;f<n/2;f++){ maxs=n; for(int w=0;w<n;w++){ if(rest[w]>rest[maxs] and used[w]!=tim)maxs=w; } if(rest[maxs]==0)break; res[maxs][s[maxs][m-rest[maxs]].second]=i; rest[maxs]--; used[maxs]=tim; br--; } for(int f=0;f<n;f++){ if(used[f]!=tim){ res[f][s[f][sol[f]-1].second]=i; sol[f]--; } } } } allocate_tickets(res); return ans; } /* int main(){ cout<<find_maximum(2, {{0, 2, 5},{1, 1, 3}})<<"\n"; } */
#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...