제출 #307138

#제출 시각아이디문제언어결과실행 시간메모리
307138plekkpea카니발 티켓 (IOI20_tickets)C++14
25 / 100
971 ms54380 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<m; 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...