Submission #1301764

#TimeUsernameProblemLanguageResultExecution timeMemory
1301764efegThe short shank; Redemption (BOI21_prison)C++20
10 / 100
41 ms8284 KiB
#include <bits/stdc++.h>
using namespace std; 

using i64 = long long; 
template<typename T>
using vec = vector<T>; 

template<typename T>
void chmin(T &a,T b){
    a = min(a,b); 
}

int n,d,t; 
vec<int> a; 

int main(){
    ios_base::sync_with_stdio(false); cin.tie(nullptr); cout.tie(nullptr); 
    cin >> n >> d >> t;
    a.assign(n+1,0); 
    for (int i = 1; i <= n; i++) cin >> a[i]; 

    int minT = INT_MAX;
    vec<int> pref(n + 10,0),suff(n + 10,0); 

    for (int i = 1; i <= n; i++){
        pref[i] += pref[i-1]; 
        chmin(minT,a[i] - i); 
        if (minT <= t - i) pref[i]++; 
    }
    
    minT = INT_MAX;
    stack<int> stk;  
    for (int i = n; i >= 1; i--){
        suff[i] += suff[i+1]; 
        minT = a[i] - i; 
        stk.push(t - i); 
        while (!stk.empty() && minT <= stk.top()){
            suff[i]++; 
            stk.pop(); 
        }
    }

    int ans = INT_MAX; 
    for (int i = 1; i < n; i++){
        chmin(ans,pref[i] + suff[i+1]); 
    }

    cout << ans << endl; 
    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...