제출 #1078867

#제출 시각아이디문제언어결과실행 시간메모리
1078867UmairAhmadMirza카니발 티켓 (IOI20_tickets)C++17
27 / 100
403 ms73248 KiB
#include <bits/stdc++.h> using namespace std; #define ll long long int const N=1505; bool od[N]; bool temp[N]; void allocate_tickets(vector<vector<int>> _x); ll fun(ll val,vector<pair<int,int>> &pr){ int n=pr.size(); int lw=n/2,hg=n/2; ll ans=0; vector<pair<ll,int>> diff; for(int i=0;i<n;i++){ auto [mn,mx]=pr[i]; if(mx<=val){ lw--; ans+=val-mn; } else if(mn>val){ hg--; ans+=mx-val; temp[i]=1; } else{ ans+=min(mx-val,val-mn); diff.push_back({abs((mx-val)-(val-mn)),i}); } } if(hg<0 || lw<0) return -1; // cout<<ans<<endl; // cout<<lw<<' '<<hg<<endl; sort(diff.begin(),diff.end()); // for(int i=0;i<diff.size();i++){ // cout<<diff[i].first<<' '<<diff[i].second<<endl; // } for(int i=0;i<lw;i++) ans+=max(0LL,-diff[i].first); reverse(diff.begin(),diff.end()); for(int i=0;i<hg;i++){ ans+=max(0LL,diff[i].first); temp[diff[i].second]=1; } return ans; } ll yep_round(vector<pair<int,int>> &pr){ int n=pr.size(); for (int i = 0; i < n; ++i){ od[i]=0; temp[i]=0; } ll cur=0; vector<int> all; for(auto [x,y]:pr){ all.push_back(x); // all.push_back(y-1); } for(int i:all){ for(int j=0;j<n;j++) temp[j]=0; ll c=fun(i,pr); // cout<<i<<' '<<c<<endl; // for(int j=0;j<n;j++) // cout<<temp[j]<<' '; // cout<<endl; if(c>=cur){ cur=c; for(int j=0;j<n;j++) od[j]=temp[j]; } } // cout<<cur<<endl; return cur; } long long find_maximum(int k, vector<vector<int>> d){ vector<int> all; int n=d.size(); int m=d[0].size(); vector<vector<int>> x=d; for(int i=0;i<n;i++) for(int j=0;j<m;j++) x[i][j]=-1; ll ans=0; for(int r=0;r<k;r++){ vector<pair<int,int>> pr; for(int i=0;i<n;i++) pr.push_back({d[i][0],d[i][m-1]}); ans+=yep_round(pr); for(int i=0;i<n;i++){ if(od[i]) x[i][m-1]=r; else x[i][0]=r; } } allocate_tickets(x); return ans; }
#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...