| # | Time | Username | Problem | Language | Result | Execution time | Memory | 
|---|---|---|---|---|---|---|---|
| 672665 | haxorman | Teams (CEOI11_tea) | C++14 | 0 ms | 0 KiB | 
This submission is migrated from previous version of oj.uz, which used different machine for grading. This submission may have different result if resubmitted.
    #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";
        }
    }
