#include <bits/stdc++.h>
#define ll long long
using namespace std;
const int N=1e6+1;
int main(){
cin.tie(NULL);
cout.tie(NULL);
ios_base::sync_with_stdio(false);
ll n,k;
cin>>n>>k;
vector<ll> a(n+1);
vector<queue<pair<ll,int>>> mas;ll dt=0ll;
vector<pair<ll,vector<int>>> answ;
ll sum=0ll;
for(int i=1;i<=n;++i){
cin>>a[i];
sum+=a[i];
}
if(sum%k!=0){
cout<<-1<<'\n';
return 0;
}
sum/=k;
for(int i=1;i<=n;++i){
if(a[i]>sum){
cout<<-1<<'\n';
return 0;
}
}
queue<pair<ll,int>> res;
for(int i=1;i<=n;++i){
if((dt+a[i])==sum){
res.push({a[i],i});
mas.push_back(res);
dt=0;
while(!res.empty()){
res.pop();
}
}
else if(dt+a[i]>sum){
res.push({sum-dt,i});
mas.push_back(res);
while(!res.empty()){
res.pop();
}
res.push({a[i]-sum+dt,i});
dt=a[i]-sum+dt;
}
else{
res.push({a[i],i});
dt+=a[i];
}
}
while(!mas[0].empty()){
ll mn=1e18;
for(auto i:mas){
ll g=i.front().first;
mn=min(mn,g);
}
answ.push_back({mn,{}});
for(int i=0;i<int(mas.size());++i){
mas[i].front().first-=mn;
answ.back().second.push_back(mas[i].front().second);
if(mas[i].front().first==0){
mas[i].pop();
}
}
}
cout<<answ.size()<<'\n';
for(auto i:answ){
cout<<i.first<<" ";
for(auto j:i.second){
cout<<j<<" ";
}
cout<<'\n';
}
return 0;
}
| # | 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... |