제출 #300717

#제출 시각아이디문제언어결과실행 시간메모리
300717CodePlatina카니발 티켓 (IOI20_tickets)C++14
14 / 100
787 ms68228 KiB
#include "tickets.h" #include <vector> #include <algorithm> #include <string> #include <utility> #define pii pair<int, int> #define piii pair<int, pii> #define pll pair<long long, long long> #define plll pair<long long, pll> #define ff first #define ss second #define ee ss.ff #define rr ss.ss using namespace std; long long find_maximum(int k, vector<vector<int>> x) { int n = x.size(); int m = x[0].size(); vector<vector<int>> ret(n, vector<int>(m, -1)); long long ans = 0; // int X[n], Y[n]; // for(int i = 0; i < n; ++i) X[i] = min_element(x[i].begin(), x[i].end()) - x[i].begin(), Y[i] = max_element(x[i].begin(), x[i].end()) - x[i].begin(), ans += x[i][Y[i]]; // vector<pii> tmp; for(int i = 0; i < n; ++i) tmp.push_back({x[i][X[i]] + x[i][Y[i]], i}); // sort(tmp.begin(), tmp.end()); // for(int i = 0; i < n / 2; ++i) ans -= tmp[i].ff, ret[tmp[i].ss][X[i]] = 0; // for(int i = n / 2; i < n; ++i) ret[tmp[i].ss][Y[i]] = 0; vector<int> lsX[n], lsY[n]; for(int i = 0; i < n; ++i) for(int j = 0; j < m; ++j) { if(x[i][j] == 0) lsX[i].push_back(j); else lsY[i].push_back(j); } for(int i = 0; i < k; ++i) { vector<pii> tmp2; for(int j = 0; j < n; ++j) tmp2.push_back({lsX[j].size(), j}); sort(tmp2.begin(), tmp2.end()); int cnt = n / 2; for(int j = 0; j < n / 2; ++j) { if(lsY[tmp2[j].ss].size()) ret[tmp2[j].ss][lsY[tmp2[j].ss].back()] = i, lsY[tmp2[j].ss].pop_back(); else ret[tmp2[j].ss][lsX[tmp2[j].ss].back()] = i, lsX[tmp2[j].ss].pop_back(), --cnt; } for(int j = n / 2; j < n; ++j) { if(lsX[tmp2[j].ss].size()) ret[tmp2[j].ss][lsX[tmp2[j].ss].back()] = i, lsX[tmp2[j].ss].pop_back(); else ret[tmp2[j].ss][lsY[tmp2[j].ss].back()] = i, lsY[tmp2[j].ss].pop_back(), --cnt; } ans += cnt; } allocate_tickets(ret); 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...