Submission #1138269

#TimeUsernameProblemLanguageResultExecution timeMemory
1138269AgageldiGift (IZhO18_nicegift)C++17
0 / 100
195 ms279112 KiB
#include <bits/stdc++.h> using namespace std; #define ll long long #define N 400005 #define ff first #define ss second #define pb push_back #define sz(s) (int)s.size() ll n, t, m, jog[N], sum, cnt = 1; pair <ll,ll> a[N]; deque <pair<ll,ll>> v[N]; int main () { ios::sync_with_stdio(0);cin.tie(0); cin >> n >> m; for(int i = 1;i <= n; i++) { cin >> a[i].ff; a[i].ss = i; sum += a[i].ff; } sort(a+1,a+n+1); if(sum % m != 0 || sum / m < a[n].ff) { cout << "-1\n"; return 0; } for(int i = 1; i <= n; i++) { if(jog[cnt] == sum / m) cnt++; if(jog[cnt] + a[i].ff <= sum / m) { v[cnt].pb({a[i].ff,a[i].ss}); jog[cnt] += a[i].ff; continue; } v[cnt].pb({sum / m - jog[cnt], a[i].ss}); a[i].ff -= (sum / m - jog[cnt]); jog[cnt] += (sum / m - jog[cnt]); cnt++; v[cnt].pb({a[i].ff,a[i].ss}); jog[cnt] += a[i].ff; } vector <int> ans; while(sz(v[1]) > 0) { ll mn = v[1][0].ff; for(int i = 1; i <= m; i++) { mn = min(mn,v[i][0].ff); ans.pb(v[i][0].ss); } ans.pb(mn); for(int i = 1; i <= m; i++) { v[i][0].ff -= mn; if(!v[i][0].ff) v[i].pop_front(); } } cout << sz(ans) / (m + 1) << '\n'; for(int i = 0; i < sz(ans); i++) { cout << ans[i] << " "; if(i % (m + 1) == m) 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...