Submission #839146

#TimeUsernameProblemLanguageResultExecution timeMemory
839146emkowTeams (CEOI11_tea)C++14
80 / 100
241 ms78652 KiB
#include <bits/stdc++.h> #pragma GCC optimize("O3", "unroll-loops") #define pb emplace_back #define ins insert #define ssize(x) (int)x.size() #define all(x) x.begin(), x.end() #define rall(x) x.rbegin(), x.rend() #define pii pair <int, int> #define pll pair <ll, ll> #define pld pair <ld, ld> #define st first #define nd second using namespace std; using ll = int_fast64_t; // using lll = __int128_t; using ld = long double; const int oo = 1e9 + 7; const int mod = 1e9 + 7; void solve(){ int n; cin >> n; vector <pii> arr(n); for(int i = 0; i < n; i ++){ cin >> arr[i].st; arr[i].nd = i; } sort(all(arr)); vector <int> ans(n); vector <vector<int>> which; int counter = -1; for(int i = n - 1; i >= 0; i --){ if(arr[i].st > i + 1){ pii mini = {oo, oo}; for(int j = 0; j <= counter; j ++){ mini = min(mini, {ssize(which[j]), j}); } ans[arr[i].nd] = mini.nd; which[mini.nd].pb(arr[i].nd); continue; } counter ++; which.push_back({}); for(int j = i; j >= i - arr[i].st + 1; j --){ ans[arr[j].nd] = counter; which[counter].pb(arr[j].nd); } i -= arr[i].st - 1; } cout << counter + 1 << '\n'; for(int i = 0; i <= counter; i ++){ cout << ssize(which[i]) << ' '; for(auto it: which[i]) cout << it + 1 << ' '; cout << '\n'; } } signed main(){ ios_base::sync_with_stdio(0); cin.tie(0); int t; t = 1; // cin >> t; while(t --) solve(); 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...