Submission #397226

#TimeUsernameProblemLanguageResultExecution timeMemory
397226Antekb카니발 티켓 (IOI20_tickets)C++14
11 / 100
2 ms716 KiB
#include "tickets.h" #include <bits/stdc++.h> using namespace std; #define st first #define nd second #define mp(x, y) make_pair(x, y) #define pb(x) push_back(x) typedef pair<int, int> pii; typedef long long ll; typedef long double ld; const ld INF=100000000000000; vector<ll> sum; long long find_maximum(int k, std::vector<std::vector<int>> x) { int n = x.size(); int m = x[0].size(); int ile[n], ile2[n]; ll ans=0; std::vector<std::vector<int>> answer; for (int i = 0; i < n; i++) { std::vector<int> row(m); answer.pb(row); } sum.resize(n); for(int i=0; i<n; i++){ for(int j=0; j<m;j ++){ sum[i]-=x[i][j]; } } vector<int> V(n); iota(V.begin(), V.end(), 0); sort(V.begin(), V.end(), [](int a, int b){return sum[a]<sum[b];}); for(int i=0; i<n/2; i++)ile2[V[i]]=m-1-k; for(int i=n/2; i<n; i++)ile2[V[i]]=m-1; for(int i=0; i<n; i++){ ile[i]=k-(m-1-ile2[i]); //cout<<ile[i]<<" "<<ile2[i]<<"\n"; } for(int i=0; i<n; i++){ for(int j=0; j<ile[i]; j++){ ans-=x[i][j]; //cout<<x[i][j]<<"a"; } for(int j=ile2[i]+1; j<m; j++){ ans+=x[i][j]; //cout<<x[i][j]<<"b"; } } for(int i=1; i<=k; i++){ vector<int> todo; int a=0, b=0; for(int j=0; j<n; j++){ if(ile[j]==0)a++, answer[j][++ile2[j]]=i; else if(ile2[j]==m-1)b++, answer[j][--ile[j]]=i; else todo.pb(j); } for(int j:todo){ if(a<n/2){ a++; answer[j][++ile2[j]]=i; } else{ b++; answer[j][--ile[j]]=i; } } } for(auto &i:answer){ for(auto &j:i)j--; } allocate_tickets(answer); return ans; }
#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...