Submission #1051422

#TimeUsernameProblemLanguageResultExecution timeMemory
1051422LittleOrangeCarnival Tickets (IOI20_tickets)C++17
27 / 100
321 ms110756 KiB
#include "tickets.h" #include <vector> #include<bits/stdc++.h> using namespace std; using ll = long long; long long find_maximum(int k, std::vector<std::vector<int>> x) { ll n = x.size(); ll m = x[0].size(); vector<vector<int>> ans(n,vector<int>(m,-1)); /*if (m == 1){ vector<ll> v; for(ll i = 0;i<n;i++) { v.push_back(x[i][0]); ans[i][0] = 0; } allocate_tickets(ans); sort(v.begin(),v.end()); ll sm = 0; for(ll i : v) sm += abs(i-v[v.size()/2]); return sm; }*/ vector<deque<pair<ll,ll>>> a(n); for(ll i = 0;i<n;i++){ for(ll j = 0;j<m;j++){ a[i].push_back({x[i][j],j}); } sort(a[i].begin(),a[i].end()); } ll sm = 0; for(ll r = 0;r<k;r++){ /*for(ll i = 0;i<n;i++){ cerr << i << ":"; for(auto [v,j] : a[i]){ cerr << " " << v << "," << j; } cerr << "\n"; }*/ vector<pair<ll,ll>> ord; for(ll i = 0;i<n;i++){ ord.push_back({a[i].front().first+a[i].back().first,i}); } sort(ord.begin(),ord.end()); for(ll i = 0;i<n/2;i++){ auto [v,j] = a[ord[i].second].front();a[ord[i].second].pop_front(); ans[ord[i].second][j] = r; //cerr << r << " -> " << ord[i].second << " " << j << "\n"; sm -= v; } for(ll i = n/2;i<n;i++){ auto [v,j] = a[ord[i].second].back();a[ord[i].second].pop_back(); ans[ord[i].second][j] = r; //cerr << r << " -> " << ord[i].second << " " << j << "\n"; sm += v; } } allocate_tickets(ans); return sm; }
#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...