제출 #1058690

#제출 시각아이디문제언어결과실행 시간메모리
1058690idas카니발 티켓 (IOI20_tickets)C++17
14 / 100
281 ms57844 KiB
#include "tickets.h" #include "bits/stdc++.h" #define FOR(i, begin, end) for(int i=(begin); i<(end); i++) #define le(x) ((x)[((int)(x).size())-1]) #define sz(x) ((int)((x).size())) #define pb push_back #define s second #define f first using namespace std; typedef long long ll; typedef vector<int> vi; typedef pair<int, int> pii; const int MxN=1510, INF=1e9; int n, m, cn[MxN], l[MxN], r[MxN]; long long find_maximum(int k, std::vector<std::vector<int>> x) { n=sz(x); m=sz(x[0]); FOR(i, 0, n) r[i]=m-1; FOR(i, 0, n) FOR(j, 0, m) cn[i]+=x[i][j]; vector b(n, vector(m, -1)); int ans=0; FOR(R, 0, k) { vector<pii> inf; FOR(i, 0, n) inf.pb({cn[i],i}); sort(inf.begin(), inf.end()); FOR(i, 0, n/2) { int in=inf[i].s; if(m-R-cn[in]>0) { b[in][l[in]++]=R; } else { ans--; cn[in]--; b[in][r[in]--]=R; } } FOR(i, n/2, n) { int in=inf[i].s; if(cn[in]>0) { ans++; cn[in]--; b[in][r[in]--]=R; } else { b[in][l[in]++]=R; } } } allocate_tickets(b); return ans; } /* 2 3 2 0 2 5 1 1 3 4 2 1 5 9 1 4 3 6 2 7 4 4 1 0 1 2 9 4 4 4 5 3 3 3 7 3 4 4 4 4 2 1 0 10 1 5 0 6 0 6 4 4 1 0 1 2 9 7 7 7 7 7 7 7 7 7 7 7 7 8 2 1 1 9 0 10 2 3 3 4 6 8 1 5 0 2 3 4 4 3 2 0 1 1 1 1 1 0 0 1 0 0 0 4 2 2 0 1 0 1 0 0 1 1 4 2 1 0 1 0 0 0 0 1 1 4 3 2 0 0 0 0 1 1 0 1 1 1 1 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...