Submission #1217526

#TimeUsernameProblemLanguageResultExecution timeMemory
1217526abczzSparklers (JOI17_sparklers)C++20
0 / 100
1 ms328 KiB
#include <iostream> #include <vector> #define ll long long using namespace std; vector <ll> A, B; ll n, k, t, l, r, mid, X[100000]; bool solve(ll u) { int i = 0, j = 0; ll xa = 0, xb = 0, tot = 1; while (tot && (i < A.size() || j < B.size())) { ll k = 2 * u; while ((i < A.size() || j < B.size()) && k) { ll tmpa = 1e18, tmpb = 1e18; if (i < A.size()) tmpa = A[i]-xa; if (j < B.size()) tmpb = B[j]-xb; if (tmpa <= tmpb) xa += min(tmpa, k), k -= min(tmpa, k); else xb += min(tmpb, k), k -= min(tmpb, k); while (i < A.size() && xa >= A[i]) ++i, ++tot; while (j < B.size() && xb >= B[j]) ++j, ++tot; } while (i < A.size() && xa >= A[i]) ++i, ++tot; while (j < B.size() && xb >= B[j]) ++j, ++tot; --tot; } if (i == A.size() && j == B.size()) return 1; else return 0; } int main() { cin >> n >> k >> t; --k; for (int i=0; i<n; ++i) cin >> X[i]; for (int i=k-1; i>=0; --i) A.push_back(X[k]-X[i]); for (int i=k+1; i<n; ++i) B.push_back(X[i]-X[k]); l = 0, r = ((ll)1e9+t-1)/t; while (l < r) { mid = (l+r)/2; if (solve(mid*t)) r = mid; else l = mid+1; } cout << l << '\n'; }
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...