제출 #1209626

#제출 시각아이디문제언어결과실행 시간메모리
1209626asdfghqwertGift (IZhO18_nicegift)C++20
0 / 100
2115 ms589824 KiB
#include <bits/stdc++.h>
#pragma GCC optimize("Ofast")
using namespace std;
typedef  long long ll;
const int maxn = 3e5 + 1 , delta = 66529;
#define int     long long int
int32_t main() {
    ios_base::sync_with_stdio(false);
    cin.tie(nullptr);
    int n , k , sum = 0;
    cin >> n >> k;
    priority_queue<pair<int , int>, vector<pair<int , int>>> pq;
    for (int i = 1; i <= n; i++) {
        int x;
        cin >> x;
        pq.push({x , i});
        sum += x;
    }
    if(sum % k != 0 || pq.top().first > sum / k) {
        cout << "-1" << endl;
        return 0;
    }
    vector<vector<int>> opr;
    while(pq.top().first != 0){
        vector<pair<int , int>> top_k(k);
        for(int i = 0 ; i < k ; i++) {
            top_k[i] = pq.top();
            pq.pop();
        }
        vector<int> nxt_opr(k + 1);
        nxt_opr[0] = top_k[0].first - pq.top().first + 1;
        if(pq.top().first == 0)nxt_opr[0]--;
        for(int i = 1 ; i <= k ; i++){
            nxt_opr[i] = top_k[i - 1].second;
            pq.push({top_k[i - 1].first - nxt_opr[0] , top_k[i - 1].second});
        }
        opr.push_back(nxt_opr);
    }
    cout << opr.size() << '\n';
    for(auto v : opr){
        for(int i : v){
            cout << i << ' ';
        }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...