Submission #906231

#TimeUsernameProblemLanguageResultExecution timeMemory
906231MilosMilutinovicTeams (CEOI11_tea)C++14
30 / 100
613 ms117136 KiB
#include <bits/stdc++.h> using namespace std; using lint = long long; using pi = array<int, 2>; #define sz(v) ((int)(v).size()) #define all(v) (v).begin(), (v).end() const int MAX = 1000010; int main() { ios_base::sync_with_stdio(0); cin.tie(0); cout.tie(0); int n; cin >> n; vector<int> a(n); for (int i = 0; i < n; i++) { cin >> a[i]; } set<pair<int, int>> st; for (int i = 0; i < n; i++) { st.emplace(a[i], i); } vector<vector<int>> teams; while (sz(st) > 0) { auto it = prev(st.end()); int v = it->first; if (v > sz(st)) break; teams.push_back({}); while (v--) { teams.back().push_back(prev(st.end())->second); st.erase(prev(st.end())); } } set<pair<int, int>> t; for (int i = 0; i < sz(teams); i++) { t.emplace(sz(teams[i]), i); } while (sz(st) > 0) { auto it = t.begin(); int idx = it->second; t.erase(it); teams[idx].push_back(st.begin()->second); st.erase(st.begin()); t.emplace(sz(teams[idx]), idx); } cout << sz(teams) << "\n"; for (int i = 0; i < sz(teams); i++) { cout << sz(teams[i]) << " "; for (int j = 0; j < sz(teams[i]); j++) { cout << teams[i][j] + 1 << " "; } cout << "\n"; } }
#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...