제출 #352461

#제출 시각아이디문제언어결과실행 시간메모리
352461MatijaL카니발 티켓 (IOI20_tickets)C++14
100 / 100
998 ms147444 KiB
/** * Author: MatijaL * Time: 2021-01-17 18:15:39 **/ #include <tickets.h> #include <bits/stdc++.h> using namespace std; typedef long long ll; #define pll pair<ll, ll> #define loop(i, n) for(ll i = 0; i < n; i++) #define FOR(i,n,m) for(ll i = n; i <= m; i++) #define isIn(vec, item) find(vec.begin(), vec.end(), item) != vec.end() #define fs first #define sc second #define pb push_back #define mp make_pair #define all(v) v.begin(),v.end() #define inf 1000000005 #define mod 1000000007 #define print(v) for(auto e : v) cout << e << " "; cout << endl; #define limit 1600 ll find_maximum(int k, vector<vector<int>> x){ ll n = x.size(); ll m = x[0].size(); int label[n][m]; memset(label, 0, sizeof label); //daj minuse loop(i, n) loop(j, k) label[i][j] = -1; //povezave int d = m - k; vector<pair<int, pll>> v; //par<cost<i, j> > loop(i, n){ loop(j, k){ v.pb(mp(x[i][j+d] + x[i][j], mp(i, j))); } } sort(all(v)); reverse(all(v)); loop(i, (k*n)/2){ auto e = v[i]; pll c = e.sc; label[c.fs][c.sc] = 0; label[c.fs][c.sc+d] = 1; } vector<vector<int>> out (n, vector<int>(m, -1)); ll ans = 0; int K = 0; loop(color, n){ loop(i, m){ if(label[color][i] != -1) break; out[color][i] = K; K++; K%=k; ans -= x[color][i]; } } assert(K==0); K = k-1; loop(color, n){ for(int i = m-1; i>=0; i--){ if(label[color][i] != 1) break; out[color][i] = K; K--; if(K < 0) K+=k; ans += x[color][i]; } } //assert(K==0); allocate_tickets(out); return ans; }
#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...