제출 #1230846

#제출 시각아이디문제언어결과실행 시간메모리
1230846PlayVoltzCarnival Tickets (IOI20_tickets)C++20
27 / 100
312 ms60392 KiB
#include "tickets.h" #include <bits/stdc++.h> using namespace std; long long find_maximum(int k, vector<vector<int>> x) { int n = x.size(); int m = x[0].size(); int st[n][m],num[n]; memset(st,0,sizeof(st)); memset(num,0,sizeof(num)); priority_queue<pair<long long,int> > pq; long long ret=0; pair<int,int> pt[n]; for(int i=0; i<n; i++){ for(int j=0; j<k; j++){ ret-=x[i][j]; st[i][j]=-1; num[i]--; } pt[i]={k-1,m-1}; pq.push({x[i][k-1]+x[i][m-1],i}); } for(int i=0; i<n*k/2; i++){ assert(!pq.empty()); long long a=pq.top().first; int b=pq.top().second; pq.pop(); num[b]+=2; ret+=a; st[b][pt[b].first]=0; st[b][pt[b].second]=1; pt[b].first--; pt[b].second--; if(pt[b].first>=0) pq.push({x[b][pt[b].first]+x[b][pt[b].second],b}); } vector<long long> use[n][2]; for(int i=0; i<n; i++){ for(int j=0; j<m; j++){ if(st[i][j]==-1) use[i][0].push_back(j); else if(st[i][j]==1) use[i][1].push_back(j); } } vector<vector<int>> answer; 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); } for(int i=0; i<k; i++){ int cur=0; for(int j=0; j<n; j++){ if(num[j]>0){ int ee=use[j][1].back(); use[j][1].pop_back(); answer[j][ee]=i; num[j]--; cur++; } else if(num[j]<0){ int ee=use[j][0].back(); use[j][0].pop_back(); answer[j][ee]=i; num[j]++; cur--; } else{ if(cur<=0){ int ee=use[j][1].back(); use[j][1].pop_back(); answer[j][ee]=i; num[j]--; cur++; } else{ int ee=use[j][0].back(); use[j][0].pop_back(); answer[j][ee]=i; num[j]++; cur--; } } } } allocate_tickets(answer); return ret; }
#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...