#include <bits/stdc++.h>
using namespace std;
#define pb push_back
#define in insert
#define lb lower_bound
#define F first
#define S second
#define sz size()
#define int long long
#define all(v) v.begin(),v.end()
#define FOR1(x, n) for(int j = x; j <= n; j ++)
#define FOR(x, n, m, d) for(int x = n; x <= m; x += d)
#define FORR(x, n, m, d) for(int x = n; x >= m; x -= d)
#define nikita ios_base::sync_with_stdio(0), cin.tie(0);
const int N = 2e6+5;
int a[N], b[N];
int n,m,k,sum=0,x,y, ans, r,pref[N], cnt, l, mod = 1e9+7, cal,lp = 1;
bool used[N];
vector<int>g[N], otvet[N], vec;
string s, str;
void rec(int k, int pos, int ema = 0){
if(ema == k){
for(auto i : vec)otvet[lp].pb(i);
lp ++;
return;
}
FOR(i, pos+1, n, 1){
vec.pb(i);
rec(k, i, ema+1);
vec.pop_back();
if(lp > 3e6){
cout << "-1";
exit(0);
}
}
}
void solve(){
cin >> n >> m;
sum = 0;
FOR(i, 1, n, 1)cin >> a[i], sum += a[i];
if(sum%m){
cout<<-1;
return;
}
if(n%m==0){
x = 1;
cout << n/m << '\n';
FOR(i, 1, n/m, 1){
cout << a[1] << ' ';
FOR(j, x, x+m-1, 1)cout<<j<<' ';
cout<<'\n';
x += m;
}
return;
}
k = n % m;
k = m - k;
x = a[1];
rec(k, m-k);
cout << lp-1+n/m << '\n';
FOR(i, 1, lp-1, 1){
cout << x / (lp-1) << ' ';
FOR(j, 1, m-k, 1)cout << j << ' ';
for(auto j : otvet[i]){
cout << j << ' ';
a[j] -= x/(lp-1);
}
cout << '\n';
}
x = m-k+1;
FOR(i, 1, n/m, 1){
cout << a[n] << ' ';
FOR(j, x, x+m-1, 1)cout << j << ' ';
cout<<'\n';
x += m;
}
}
signed main(){
nikita
int tt = 1;
if(!tt)cin >> tt;
FOR(i, 1, tt, 1)solve();
}
# | 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... |