Submission #471277

#TimeUsernameProblemLanguageResultExecution timeMemory
471277Cross_RatioCarnival Tickets (IOI20_tickets)C++14
41 / 100
692 ms57820 KiB
#include <bits/stdc++.h> //#include "tickets.h" using namespace std; void allocate_tickets(vector<vector<int>>); typedef pair<int,int> P; long long find_maximum(int k, vector<vector<int> > x) { int N = x.size(); int M = x[0].size(); vector<vector<int> > ans; ans.resize(N); int i,j; for(i=0;i<N;i++) { ans[i].resize(M); fill(ans[i].begin(),ans[i].end(),-1); } long long int cnt = 0; if(k==1) { vector<int> pt1; vector<int> pt2; pt1.resize(N); pt2.resize(N); fill(pt2.begin(),pt2.end(),M-1); int j, st; for(j=0;j<k;j++) { vector<P> V; for(i=0;i<N;i++) { V.push_back(P(x[i][pt2[i]]+x[i][pt1[i]],i)); } sort(V.begin(),V.end()); for(i=0;i<N;i++) { int n = V[i].second; if(i < N / 2) { ans[n][pt1[n]] = j; cnt -= x[n][pt1[n]]; pt1[n]++; } else { ans[n][pt2[n]] = j; cnt += x[n][pt2[n]]; pt2[n]--; } } } allocate_tickets(ans); return cnt; } else { vector<P> A; A.resize(N); for(i=0;i<N;i++) { for(j=0;j<M;j++) { A[i].first += x[i][j]; } A[i].second = i; } vector<int> pt1; vector<int> pt2; pt1.resize(N); pt2.resize(N); fill(pt2.begin(),pt2.end(),M-1); sort(A.begin(),A.end(),[](P x, P y) {return x.first > y.first;}); for(i=0;i<k;i++) { for(j=0;j<N;j++) { if(j < N/2) { ans[A[j].second][pt2[A[j].second]] = i; cnt += x[A[j].second][pt2[A[j].second]]; A[j].first -= x[A[j].second][pt2[A[j].second]]; pt2[A[j].second]--; } else { ans[A[j].second][pt1[A[j].second]] = i; cnt -= x[A[j].second][pt1[A[j].second]]; A[j].first -= x[A[j].second][pt1[A[j].second]]; pt1[A[j].second]++; } } sort(A.begin(),A.end(),[](P x, P y) {return x.first > y.first;}); } allocate_tickets(ans); return cnt; } }

Compilation message (stderr)

tickets.cpp: In function 'long long int find_maximum(int, std::vector<std::vector<int> >)':
tickets.cpp:26:16: warning: unused variable 'st' [-Wunused-variable]
   26 |         int j, st;
      |                ^~
#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...