Submission #1084443

#TimeUsernameProblemLanguageResultExecution timeMemory
1084443khanhphucscratchCarnival Tickets (IOI20_tickets)C++14
27 / 100
351 ms73116 KiB
#include<bits/stdc++.h> #include "tickets.h" #define int long long using namespace std; /*void allocate_tickets(vector<vector<int32_t>> s) { int n = s.size(), m = s[0].size(); for(int i = 0; i < n; i++){ for(int j = 0; j < m; j++) cout<<s[i][j]<<" "; cout<<'\n'; } }*/ int find_maximum(int32_t k, vector<vector<int32_t>> a) { vector<pair<int, int>> reduce_option; int n = a.size(), m = a[0].size(), ans = 0; for(int i = 0; i < n; i++){ for(int j = m-1; j >= m-k; j--) ans += a[i][j]; for(int j = 0; j < k; j++) reduce_option.push_back(make_pair(a[i][j] + a[i][j+(m-k)], i)); } vector<int> reduce(n), add(n); sort(reduce_option.begin(), reduce_option.end()); for(int i = 0; i < n*k/2; i++){ ans -= reduce_option[i].first; //cout<<"A"<<reduce_option[i].first<<endl; reduce[reduce_option[i].second]++; } for(int i = 0; i < n; i++) add[i] = k-reduce[i]; vector<vector<int32_t>> s(n); for(int i = 0; i < n; i++){ s[i].resize(m); for(int j = 0; j < m; j++) s[i][j] = -1; } for(int it = k-1; it >= 0; it--){ int reduce_demand = n/2; for(int i = 0; i < n; i++){ if(reduce_demand > 0 && reduce[i] > 0){ reduce[i]--; reduce_demand--; s[i][reduce[i]] = it; } else{ s[i][m-add[i]] = it; add[i]--; } } } allocate_tickets(s); return ans; } /*signed main() { int n, m, k; cin>>n>>m>>k; vector<vector<int32_t>> a(n); for(int i = 0; i < n; i++){ a[i].resize(m); for(int j = 0; j < m; j++) cin>>a[i][j]; } cout<<find_maximum(k, a); } */
#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...