Submission #1080044

#TimeUsernameProblemLanguageResultExecution timeMemory
1080044GrindMachineCarnival Tickets (IOI20_tickets)C++17
27 / 100
397 ms81772 KiB
#include <bits/stdc++.h> using namespace std; typedef long long int ll; typedef pair<int,int> pii; typedef pair<ll,ll> pll; #define pb push_back #define endl '\n' #define conts continue #define sz(a) (int)a.size() #define ff first #define ss second #define all(a) a.begin(),a.end() #define rall(a) a.rbegin(),a.rend() #define rep(i,n) for(int i = 0; i < n; ++i) #define rep1(i,n) for(int i = 1; i <= n; ++i) #define rev(i,s,e) for(int i = s; i >= e; ++i) #define trav(i,a) for(auto &i : a) template<typename T> void amin(T &x, T y){ x = min(x,y); } template<typename T> void amax(T &x, T y){ x = max(x,y); } template<typename A,typename B> string to_string(pair<A,B> p); string to_string(const string &s){ return "'"+s+"'"; } string to_string(const char* s){ return to_string((string)s); } string to_string(bool b){ return b?"true":"false"; } template<typename A> string to_string(A v){ string res = "{"; trav(x,v){ res += to_string(x)+","; } if(res.back() == ',') res.pop_back(); res += "}"; return res; } template<typename A,typename B> string to_string(pair<A,B> p){ return "("+to_string(p.ff)+","+to_string(p.ss)+")"; } #define debug(x) cout << "[" << #x << "]: "; cout << to_string(x) << endl const int MOD = 1e9 + 7; const int N = 1e5 + 5; const int inf1 = 1e9 + 5; const ll inf2 = (ll)1e18 + 5; #include "tickets.h" long long find_maximum(int k, std::vector<std::vector<int>> a) { int n = a.size(); int m = a[0].size(); vector<deque<int>> dq(n); rep(i,n) rep(j,m) dq[i].pb(j); vector<vector<int>> ans(n,vector<int>(m,-1)); ll cost = 0; rep(iter,k){ vector<pll> options; rep(i,n){ ll f = dq[i].front(), b = dq[i].back(); cost -= a[i][f]; options.pb({a[i][b]+a[i][f],i}); } sort(rall(options)); rep(ind,n){ auto [val,i] = options[ind]; ll f = dq[i].front(), b = dq[i].back(); if(ind < n/2){ cost += val; ans[i][b] = iter; dq[i].pop_back(); } else{ ans[i][f] = iter; dq[i].pop_front(); } } } allocate_tickets(ans); return cost; // std::vector<std::vector<int>> answer; // for (int i = 0; i < n; i++) { // std::vector<int> row(m); // for (int j = 0; j < m; j++) { // if (j < k) { // row[j] = j; // } else { // row[j] = -1; // } // } // answer.push_back(row); // } // allocate_tickets(answer); // return 1; }
#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...