Submission #1140248

#TimeUsernameProblemLanguageResultExecution timeMemory
1140248AgageldiGift (IZhO18_nicegift)C++17
0 / 100
157 ms38128 KiB
#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 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...