Submission #1163944

#TimeUsernameProblemLanguageResultExecution timeMemory
1163944AlgorithmWarrior카니발 티켓 (IOI20_tickets)C++20
27 / 100
372 ms51492 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 i,j; long long sum=0; vector<vector<int>>answer; vector<bool>ans(n,0); for(i=0;i<n;++i){ vector<int>row; for(j=0;j<m;++j) row.push_back(-1); answer.push_back(row); } for(i=0;i<n;++i){ int cntm=0,cntM=0; long long summ=0,sumM=0; long long summij=0; vector<pair<int,int>>mij; vector<bool>util(n,1); util[i]=0; for(j=0;j<n;++j) if(i!=j){ if(x[j].back()<x[i][0]){ ++cntm; summ+=x[i][0]-x[j][0]; util[j]=0; } else if(x[i][0]<x[j][0]){ ++cntM; sumM+=x[j].back()-x[i][0]; } else{ summij+=x[j].back()-x[i][0]; mij.push_back({x[j][0]+x[j].back(),j}); } } if(cntm<n/2 && cntM<=n/2){ sort(mij.begin(),mij.end()); summij+=summ+sumM; int alegem=n/2-1-cntm; for(j=0;j<alegem;++j){ summij+=2*x[i][0]-mij[j].first; util[mij[j].second]=0; } if(sum<summij){ sum=summij; ans=util; } } } for(i=0;i<n;++i) if(ans[i]) answer[i].back()=0; else answer[i][0]=0; allocate_tickets(answer); return sum; }
#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...