Submission #908159

#TimeUsernameProblemLanguageResultExecution timeMemory
908159daoquanglinh2007Gift (IZhO18_nicegift)C++17
100 / 100
769 ms104104 KiB
#include <bits/stdc++.h> using namespace std; #define int long long #define pii pair <int, int> #define fi first #define se second #define mp make_pair #define isz(a) (int)(a).size() const int NM = 1e6; int N, K, a[NM+5]; priority_queue <pii> Q; vector <pair <int, vector <int> > > ans; signed main(){ ios_base::sync_with_stdio(0); cin.tie(0); cout.tie(0); cin >> N >> K; int sum = 0, mx = 0; for (int i = 1; i <= N; i++){ cin >> a[i]; sum += a[i]; mx = max(mx, a[i]); Q.push(mp(a[i], i)); } if (sum%K != 0 || mx > sum/K){ cout << -1; return 0; } while (!Q.empty()){ pair <int, vector <int> > P = mp(0, vector <int>(0)); for (int i = 1; i <= K; i++){ P.se.push_back(Q.top().se); Q.pop(); } P.fi = a[P.se[K-1]]; if (!Q.empty()){ P.fi = min(P.fi, sum/K-Q.top().fi); } for (int i = 0; i < K; i++){ a[P.se[i]] -= P.fi; if (a[P.se[i]] > 0) Q.push(mp(a[P.se[i]], P.se[i])); } sum -= P.fi*K; ans.push_back(P); } cout << isz(ans) << '\n'; for (int i = 0; i < isz(ans); i++){ cout << ans[i].fi << ' '; for (int x : ans[i].se) cout << x << ' '; cout << '\n'; } return 0; }
#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...