Submission #1181426

#TimeUsernameProblemLanguageResultExecution timeMemory
1181426PieArmyGift (IZhO18_nicegift)C++20
100 / 100
1049 ms107216 KiB
#include<bits/stdc++.h> typedef long long ll; #define pb push_back #define fr first #define sc second using namespace std; ll n,k; ll arr[1000023]; ll sum=0,q; int per[1000023]; int main(){ ios_base::sync_with_stdio(false);cin.tie(NULL); cin>>n>>k; for(int i=1;i<=n;i++){ cin>>arr[i]; sum+=arr[i]; } if(sum%k){ cout<<-1; return 0; } q=sum/k; for(int i=1;i<=n;i++){ if(arr[i]>q){ cout<<-1; return 0; } } iota(per+1,per+n+1,1); sort(per+1,per+n+1,[&](const int &x,const int &y){ return arr[x]<arr[y]; }); int r=n; vector<int>v; while(arr[per[r]]==q){ v.pb(per[r]); r--; k--; } int l=1; vector<vector<ll>>ans; while(l<=r){ ll x=min(arr[per[l]],q-arr[per[r]]); ans.pb({x}); for(int i=l;i<l+k;i++){ ans.back().pb(per[i]); arr[per[i]]-=x; } for(int y:v){ ans.back().pb(y); } while(arr[per[l]]==0){ l++; } q-=x; while(arr[per[r]]==q){ v.pb(per[r]); r--; k--; } } ans.pb({arr[v.back()]}); for(int x:v){ ans.back().pb(x); } cout<<ans.size()<<endl; for(auto x:ans){ for(auto y:x){ cout<<y<<" "; } cout<<endl; } }
#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...