Submission #668858

#TimeUsernameProblemLanguageResultExecution timeMemory
668858mychecksedadThe short shank; Redemption (BOI21_prison)C++17
0 / 100
1 ms340 KiB
/* Author : Mychecksdead */ #include<bits/stdc++.h> using namespace std; typedef long long int ll; typedef long double ld; #define pb push_back #define all(x) x.begin(), x.end() const int N = 2e6+10, M = 5e3, MOD = 1e9+7; int n, d, a[N], T, dp[M][M], pref[N], suf[N]; void solve(){ cin >> n >> d >> T; for(int i = 1; i <= n; ++i) cin >> a[i]; pref[0] = 0, suf[n + 1] = 0; int cur = MOD; for(int i = 1; i <= n; ++i){ pref[i] = pref[i - 1]; if(min(a[i], cur) < T) pref[i]++; cur = min(a[i] + 1, cur + 1); } queue<pair<int, int>> q; for(int i = n; i >= 1; --i){ suf[i] = suf[i + 1]; q.push({a[i], i}); while(!q.empty()){ if(min(q.front().first, a[i] + q.front().second - i) < T){ suf[i]++; q.pop(); }else break; } } int ans = n; for(int i = 0; i <= n; ++i){ ans = min(ans, pref[i] + suf[i + 1]); } cout << ans; } int main(){ cin.tie(0); ios::sync_with_stdio(0); solve(); 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...
#Verdict Execution timeMemoryGrader output
Fetching results...