제출 #1224480

#제출 시각아이디문제언어결과실행 시간메모리
1224480PVM_pvmCarnival Tickets (IOI20_tickets)C++20
27 / 100
374 ms51436 KiB
#include "tickets.h" #include <bits/stdc++.h> using namespace std; #define MAXN 1502 int N,M; pair<long long, long long> cv[MAXN]; bool cmp(int &a, int &b) { return (cv[a].first+cv[a].second)<(cv[b].first+cv[b].second); } int br1[MAXN],br2[MAXN]; int oper; vector<vector<int>> ans; long long howm(int koi, bool zap) { int n=N; int m=M; int ml=1,gol=0; vector<int> sm; sm.push_back(koi); vector<int> gl; vector<int> und; for (int q=0;q<n;q++) { if (q==koi) continue; if (cv[q].first>cv[koi].first) { gol++; gl.push_back(q); } else if (cv[q].second<cv[koi].first) { ml++; sm.push_back(q); } else { und.push_back(q); } } if (ml>(n/2)) return -1; if (gol>(n/2)) return -1; sort(und.begin(),und.end(),cmp); for (int q=0;q<und.size();q++) { if (ml==(n/2)) { gl.push_back(und[q]); gol++; } else { sm.push_back(und[q]); ml++; } } long long suma=0; long long sto=cv[koi].first; for (int q=0;q<sm.size();q++) suma+=sto-cv[ sm[q] ].first; for (int q=0;q<gl.size();q++) suma+=cv[ gl[q] ].second-sto; if (zap) { for (int q=0;q<sm.size();q++) { ans[ sm[q] ][br1[sm[q]]]=oper; br1[sm[q]]++; } for (int q=0;q<gl.size();q++) { ans[ gl[q] ][br2[gl[q]]]=oper; br2[gl[q]]--; } //allocate_tickets(ans); } //cout<<sto<<" "<<suma<<"\n"; return suma; } long long find_maximum(int k, vector<vector<int>> x) { int n = x.size(); N=n; int m = x[0].size(); M=m; for (int i = 0; i < n; i++) { cv[i]={ x[i][0] , x[i][m-1] }; br1[i]=0; br2[i]=m-1; } for (int q=0;q<n;q++) { vector<int> ans2; ans2.resize(m); for (int w=0;w<m;w++) ans2[w]=-1; ans.push_back(ans2); } long long otg=0; for (oper=0;oper<k;oper++) { long long cur=-1; int kogo=-1; for (int q=0;q<n;q++) { long long da=howm(q,0); if (da>cur) { cur=da; kogo=q; } } otg+=cur; howm(kogo,1); for (int q=0;q<n;q++) { cv[q].first=x[q][br1[q]]; cv[q].second=x[q][br2[q]]; } } allocate_tickets(ans); return otg; }
#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...