#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;
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 time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |