Submission #329110

#TimeUsernameProblemLanguageResultExecution timeMemory
329110thecodingwizardTeams (CEOI11_tea)C++11
100 / 100
2417 ms25296 KiB
#include <bits/stdc++.h> using namespace std; using ll = long long; #define ii pair<int, int> #define f first #define s second #define pb push_back #define mp make_pair #define all(x) x.begin(), x.end() #define F0R(i, n) for (int i = 0; i < n; i++) #define FOR(i, a, b) for (int i = a; i < b; i++) #define inf 1000000010 int main() { cin.tie(0)->sync_with_stdio(0); int n; cin >> n; vector<ii> A; F0R(i, n) { int x; cin >> x; A.pb(mp(x,i+1)); } sort(all(A)); int teams = 1; vector<int> breakpoints; for (int i = 0; i < n-A.back().f; i++) { int curSz = 1; while (curSz < A[i].f && i+1 < n-A.back().f) { curSz++; i++; } if (curSz >= A[i].f) { teams++; breakpoints.pb(i); } } breakpoints.pb(n-1); for (int i = breakpoints.size()-2; ~i; i--) { int j; for (j = breakpoints[i+1]-A[breakpoints[i+1]].f; ; j--) { if (j-(i==0?-1:breakpoints[i-1]) >= A[j].f) break; } breakpoints[i] = j; } for (int i = 0; i < (int)breakpoints.size()-1; i++) { int curSize = breakpoints[i]-(i==0?-1:breakpoints[i-1]); int j; for (j = i+1; j < (int)breakpoints.size(); j++) { int nxtSize = breakpoints[j]-breakpoints[j-1]; if (nxtSize < (curSize+nxtSize)/(j-i+1)) { curSize += nxtSize; } else { break; } } for (int k = i; k < j; k++) { breakpoints[k] = (k==0?-1:breakpoints[k-1]) + curSize/(j-i); if (curSize % (j-i) >= j-k) { breakpoints[k]++; } } i = j-1; } cout << teams << endl; int curIdx = 0; for (int x : breakpoints) { cout << x - curIdx + 1; assert(x-curIdx+1>=A[x].f); for (; curIdx <= x; curIdx++) cout << " " << A[curIdx].s; cout << endl; } return 0; }
#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...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...