Submission #1291757

#TimeUsernameProblemLanguageResultExecution timeMemory
1291757ChuanChenCarnival Tickets (IOI20_tickets)C++20
25 / 100
474 ms54200 KiB
#include "tickets.h" #include <bits/stdc++.h> using namespace std; typedef long long ll; const int MAXN = 1505; int n, m, cnt0[MAXN], cnt1[MAXN]; vector<vector<int>> ans; ll total_prize; bool cmp(int a, int b){ return cnt0[a] < cnt0[b]; } long long find_maximum(int k, vector<vector<int>> x) { n = x.size(); m = x[0].size(); ans.assign(n, vector<int>(m, 0)); vector<int> allx; for (int i = 0; i < n; i++) { for (int j = 0; j < m; j++) { allx.push_back(x[i][j]); } } sort(allx.begin(), allx.end()); int mid = allx[allx.size()/2]; for (int i = 0; i < n; i++) { for (int j = 0; j < m; j++) { if(x[i][j] < mid) cnt0[i]++; else cnt1[i]++; } } for(int r = 0; r < k; r++){ vector<int> escolhe1, escolhe0, nescolheu; for(int i = 0; i < n; i++){ if(cnt0[i] == 0){//preciso pegar 1 escolhe1.push_back(i); } else if(cnt1[i] == 0){//preciso pegar 0 escolhe0.push_back(i); } else nescolheu.push_back(i); } sort(nescolheu.begin(), nescolheu.end(), cmp); //quem tem mais 0 doa 0, mais 1 doa 1 for(int e : nescolheu){//da frente eh que tem menos zero if((int)escolhe1.size() < n/2) escolhe1.push_back(e); else escolhe0.push_back(e); } // cerr << "Rodada " << r << endl; // cerr << "Escolhi 0 dos: "; // for(int e : escolhe0) {cerr << e << " ";} cerr << endl; // cerr << "Escolhi 1 dos: "; // for(int e : escolhe1) {cerr << e << " ";} cerr << endl; for(int e : escolhe0){ cnt0[e]--; ans[e][cnt0[e]] = r; total_prize += mid-x[e][cnt0[e]]; } for(int e : escolhe1){ ans[e][m-cnt1[e]] = r; total_prize += x[e][m-cnt1[e]]-mid; cnt1[e]--; } } allocate_tickets(ans); return total_prize; }
#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...