Submission #1172530

#TimeUsernameProblemLanguageResultExecution timeMemory
1172530hyakupCarnival Tickets (IOI20_tickets)C++20
11 / 100
1 ms840 KiB
#include "tickets.h" #include <bits/stdc++.h> using namespace std; #define ll long long #define pii pair<int, int> long long find_maximum(int k, vector<vector<int>> v){ int n = v.size(), m = v[0].size(); vector<pii> ordem; for( int i = 0; i < n; i++ ) for( int j = 0; j < m; j++ ) ordem.push_back({ v[i][j], i*m + j }); sort( ordem.begin(), ordem.end() ); vector<int> vmax[n], vmin[n]; ll sum = 0; for( int i = 0; i < (int)ordem.size()/2; i++ ) vmin[ordem[i].second/m].push_back(ordem[i].second), sum -= ordem[i].first; for( int i = (int)ordem.size()/2; i < (int)ordem.size(); i++ ) vmax[ordem[i].second/m].push_back(ordem[i].second),sum += ordem[i].first; vector<vector<int>> resp(n, vector<int>(m, -1)); for( int i = 0; i < k; i++ ){ int x = 0; vector<int> marc(n); int aux = 0; for( int j = 0; j < n; j++ ){ if( vmax[j].size() > vmin[j].size() ){ aux++; marc[j] = true; int id = vmax[j].back(); vmax[j].pop_back(); resp[id/m][id%m] = i; } else if( vmax[j].size() < vmin[j].size() ){ aux--; marc[j] = true; int id = vmin[j].back(); vmin[j].pop_back(); resp[id/m][id%m] = i; } } for( int j = 0; j < n; j++ ) if( !marc[j] ){ if( aux <= 0 ){ int id = vmax[j].back(); vmax[j].pop_back(); resp[id/m][id%m] = i; aux++; } else{ int id = vmin[j].back(); vmin[j].pop_back(); resp[id/m][id%m] = i; aux--; } } } allocate_tickets(resp); 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...