Submission #1150077

#TimeUsernameProblemLanguageResultExecution timeMemory
1150077AgageldiGift (IZhO18_nicegift)C++17
30 / 100
84 ms137920 KiB
#include <bits/stdc++.h> using namespace std; #define ll long long #define N 100000 #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, a[N]; deque <ll> v[N], d[N]; int main () { ios::sync_with_stdio(0);cin.tie(0); cin >> n >> m; for(int i = 1;i <= n; i++) { cin >> a[i]; sum += a[i]; } if(sum % m) { cout << "-1\n"; return 0; } for(int i = 1; i <= n; i++) { if(a[i] > sum / m) { cout << "-1\n"; return 0; } } for(int i = 1; i <= n; i++) { if(jog[cnt] == sum / m) cnt++; if(jog[cnt] + a[i] <= sum / m) { v[cnt].pb(a[i]); d[cnt].pb(i); jog[cnt] += a[i]; continue; } v[cnt].pb(sum / m - jog[cnt]); d[cnt].pb(i); a[i] -= (sum / m - jog[cnt]); jog[cnt] += (sum / m - jog[cnt]); cnt++; v[cnt].pb(a[i]); d[cnt].pb(i); jog[cnt] += a[i]; } vector <ll> ans; while(sz(v[1]) > 0) { if(sz(ans)%(m+1) == 0 && sz(ans)/(m+1) > 3e6) return cout << "-1\n", 0; ll mn = v[1][0]; bool tr = 0; for(int i = 1; i <= m; i++) { mn = min(mn,v[i][0]); } ans.pb(mn); for(int i=1;i<=m;i++) { ans.pb(d[i][0]); } for(int i = 1; i <= m; i++) { v[i][0] -= mn; if(!v[i][0]){ d[i].pop_front(); 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...