Submission #1018758

#TimeUsernameProblemLanguageResultExecution timeMemory
1018758vjudge1Parkovi (COCI22_parkovi)C++17
0 / 110
134 ms4264 KiB
#include <bits/stdc++.h> using namespace std; #define int int64_t int n, k, curk; vector<bool> ans; bool f(vector<int> const& a, int m) { curk = 1; int cur = 0; bool flag = true; ans[0] = false; for(int i = 1; i < n; i ++) { if(a[i] - cur > m) { if(flag) { cur = a[i - 1]; flag = false; ans[i - 1] = true; if(a[i] - cur > m) { flag = true; cur = a[i]; curk++; } } else { flag = true; cur = a[i]; curk ++; } } ans[i] = false; } if(flag) ans[n - 1] = true; return curk <= k; } int32_t main() { cin >> n >> k; vector<int> a(n, 0); ans.assign(n, false); for(int i = 1; i < n; i ++) { int d, b, c; cin >> d >> b >> c; a[i] = c; } for(int i = 1; i < n; i ++) a[i] += a[i-1]; int l = 1, r = 1e18; while(r - l > 1) { int m = (l + r) >> 1; bool cur = f(a, m); if(cur) r = m; else l = m + 1; } cout << r << '\n'; int cur = 0; for(int i = 0; i < n; i ++) if(ans[i]) { cout << i + 1 << ' '; cur ++; if(cur == k) break; } 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...