# | 제출 시각 | 아이디 | 문제 | 언어 | 결과 | 실행 시간 | 메모리 |
---|---|---|---|---|---|---|---|
672665 | 2022-12-17T11:09:20 Z | haxorman | Teams (CEOI11_tea) | C++14 | 0 ms | 0 KB |
#include <bits/stdc++.h> using namespace std; const int mxN = 1e6 + 7; pair<int,int> arr[mxN]; int32_t main() { ios_base::sync_with_stdio(0); cin.tie(0); cout.tie(0); int n; cin >> n; for (int i = 0; i < n; ++i) { cin >> arr[i].first; arr[i].second = i + 1; } sort(arr, arr + n, greater<pair<int,int>>()); vector<vector<int>> ans; for (int i = 0; i < n;) { if (arr[i].first > n - i) { if (!ans.size()) { cout << "0\n"; exit(0); } sort(ans.begin(), ans.end()); ans[0].push_back(arr[i].second); ++i; } else { ans.push_back({arr[i].second}); int tmp = i + 1; while (ans.back().size() < arr[i].first) { ans.back().push_back(arr[tmp++].second); } i = tmp; } } cout << ans.size() << "\n"; for (auto vec : ans) { cout << vec.size() << ' '; for (auto x : vec) { cout << x << ' '; } cout << "\n"; } }