Submission #307121

#TimeUsernameProblemLanguageResultExecution timeMemory
307121plekkpeaCarnival Tickets (IOI20_tickets)C++14
27 / 100
718 ms52940 KiB
#include "tickets.h" #include<bits/stdc++.h> #include <vector> using namespace std; typedef long long ll; long long find_maximum(int k, vector<vector<int> > x) { int n = x.size(); int m = x[0].size(); vector<vector<int> > answer; vector<pair<ll,ll> > p; for (int i = 0; i < n; i++) { vector<int> row(m); for (int j = 0; j < m; j++) row[j] = -1; answer.push_back(row); } ll l[n+5],r[n+5],y,tul=0,u,su[n+5]; for(int i=0; i<n; i++){ l[i]=0; r[i]=m-1; su[i]=0; for(int j=0; j<k; j++) su[i]+=x[i][j]; for(int j=m-1; j>=m-k; j--) su[i]+=x[i][j]; } for(int o=0; o<k; o++){ p.resize(0); for(int i=0; i<n; i++) p.push_back({su[i],i}); sort(p.begin(),p.end()); u=p[n/2].second; u=x[u][r[u]]; for(int i=0; i<n; i++) if(i<n/2){ y=p[i].second; answer[y][l[y]]=o; tul+=u-x[y][l[y]]; su[y]-=x[y][l[y]]; //su[y]-=x[y][r[y]-k+o]; l[y]++; } else{ y=p[i].second; answer[y][r[y]]=o; tul+=x[y][r[y]]-u; su[y]-=x[y][r[y]]; //su[y]-=x[y][l[y]+k-o]; r[y]--; } } allocate_tickets(answer); return tul; }
#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...