Submission #1218316

#TimeUsernameProblemLanguageResultExecution timeMemory
1218316brintonCarnival Tickets (IOI20_tickets)C++20
27 / 100
364 ms70452 KiB
#include "tickets.h" #include <bits/stdc++.h> using namespace std; long long m_allocate_tickets(vector<vector<int>> answer,vector<vector<int>> x){ allocate_tickets(answer); // find k; int N = answer.size(); int k = 0; for(auto &i:answer[0]) k = max(i+1,k); vector<vector<int>> cards(k); for(int i = 0;i < N;i++){ for(int j = 0;j < answer[0].size();j++){ if(answer[i][j] != -1) cards[answer[i][j]].push_back(x[i][j]); } } long long ans = 0; for(auto v:cards) { sort(v.begin(),v.end()); for(int i = 0;i < N;i++){ if(i < N/2){ ans -= v[i]; }else{ ans += v[i]; } } } return ans; } long long find_maximum(int k, vector<vector<int>> x) { int N = x.size(); int M = x[0].size(); vector<vector<int>> answer(N,vector<int>(M,-1)); vector<int> fpt(N,0); vector<int> bpt(N,M-1); for(int ck = 0;ck < k;ck++){ vector<array<int,3>> colors;// big,small,idx; for(int i = 0;i < N;i++){ colors.push_back({x[i][bpt[i]],x[i][fpt[i]],i}); } sort(colors.begin(),colors.end()); priority_queue<pair<int,int>> pq;// -big-small,idx for(auto [big,small,idx]:colors){ // cout << "!" << big << " " << small << " " << idx << endl; if(pq.size() < N/2) pq.push({-big-small,idx}); else { auto [minus,pidx] = pq.top(); if(big+minus > -small) { pq.pop(); pq.push({-big-small,idx}); } } } vector<int> type(N,0);// 0:small,1:big; while(!pq.empty()){ auto [minus,pidx] = pq.top(); pq.pop(); type[pidx] = 1; } for(int i = 0;i < N;i++){ // cout << type[i]; if(type[i]){ answer[i][bpt[i]] = ck; bpt[i]--; }else{ answer[i][fpt[i]] = ck; fpt[i]++; } } } return m_allocate_tickets(answer,x); }
#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...