Submission #1239489

#TimeUsernameProblemLanguageResultExecution timeMemory
1239489_callmelucianGift (IZhO18_nicegift)C++17
30 / 100
204 ms47324 KiB
#include <bits/stdc++.h>
using namespace std;

using ll = long long;
using ld = long double;
using pl = pair<ll,ll>;
using pii = pair<int,int>;
using tpl = tuple<int,int,int>;

#define all(a) a.begin(), a.end()
#define filter(a) a.erase(unique(all(a)), a.end())

int main()
{
    ios::sync_with_stdio(0);
    cin.tie(0);

    int n, k; cin >> n >> k;
    vector<ll> a(n);
    for (ll &u : a) cin >> u;

    ll sum = accumulate(all(a), 0LL);
    if (sum % k) return cout << -1 << "\n", 0;

    priority_queue<pii> pq;
    for (int i = 0; i < n; i++) pq.emplace(a[i], i);

    vector<pair<int,vector<int>>> opr;
    for (int i = 0; i < sum / k; i++) {
        vector<int> pos; vector<pii> wait;
        for (int j = 0; j < k; j++) {
            if (pq.empty()) return cout << -1 << "\n", 0;
            int a, idx; tie(a, idx) = pq.top(); pq.pop();
            pos.push_back(idx + 1);
            if (a > 1) wait.emplace_back(a - 1, idx);
        }
        for (auto [a, b] : wait) pq.emplace(a, b);
        opr.emplace_back(1, pos);
    }

    cout << opr.size() << "\n";
    for (auto [a, vec] : opr) {
        cout << a << " ";
        for (int u : vec) cout << u << " ";
        cout << "\n";
    }

    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...