#include <bits/stdc++.h>
using namespace std;
#define ll long long
#define N 4000005
#define ff first
#define ss second
#define pb push_back
#define sz(s) (int)s.size()
ll n, t, m,mn, sum, a[N];
deque <pair<ll,ll>> d;
int main () {
ios::sync_with_stdio(0);cin.tie(0);
cin >> n >> m;
for(int i = 1;i <= n; i++) {
cin >> a[i];
sum += a[i];
d.pb({a[i],i});
}
if(sum % m != 0) {
cout << "-1\n";
return 0;
}
for(int i = 1; i <= n; i++) {
if(sum / m < a[i]) {
cout << "-1\n";
return 0;
}
}
vector <int> answer;
while(sz(d)) {
if(sz(d) < m) {
cout << "-1\n";
return 0;
}
mn = d[0].ff;
for(int i = 0; i < m; i++){
mn = min(mn,d[i].ff);
}
answer.pb(mn);
for(int i =0;i<m;i++) {
answer.pb(d[i].ss);
}
t = 0;
while(t < m && d[0].ff == mn) {
d.pop_front();
t++;
}
for(int i = t; i < m; i++) {
d[0].ff -= mn;
}
}
cout <<sz(answer) / (m + 1) << '\n';
for(int i = 0; i < sz(answer); i++) {
cout << answer[i] << " ";
if(i % (m + 1) == m) 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... |