Submission #1107930

#TimeUsernameProblemLanguageResultExecution timeMemory
1107930stdfloatGift (IZhO18_nicegift)C++17
30 / 100
2043 ms272060 KiB
#include <bits/stdc++.h>
using namespace std;

using ll = long long;

#define sz(v)	(int)(v).size()
#define all(v)	(v).begin(), (v).end()

#define ff	first
#define ss	second
#define pii	pair<int, int>

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

	int n, k;
	cin >> n >> k;

	ll sm = 0;
	set<pii> s;
	for (int i = 0; i < n; i++) {
		int x;
		cin >> x;

		sm += x;
		s.insert({x, i});
	}

	if (sm % k) return cout << -1, 0;
	
	vector<vector<int>> ans;
	while ((*--s.end()).ff) {
		if (sz(s) < k) return cout << -1, 0;

		vector<pii> v;
		ans.push_back({});
		for (int i = 0; i < k; i++) {
			auto t = --s.end();
		
			ans.back().push_back((*t).ss);
			if ((*t).ff) v.push_back({(*t).ff - 1, (*t).ss});
			
			s.erase(t);
		}

		for (auto i : v)
			s.insert(i);
	}

	cout << sz(ans) << '\n';
	for (auto i : ans) {
		cout << "1 ";
		for (auto j : i)
			cout << j + 1 << ' ';
		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...