Submission #1273569

#TimeUsernameProblemLanguageResultExecution timeMemory
1273569KindaGoodGamesThe short shank; Redemption (BOI21_prison)C++20
0 / 100
1 ms572 KiB
// #pragma GCC optimize("O3, unroll-loops, Ofast")
#include<bits/stdc++.h>

using namespace std;

vector<int> arr;

const int MAXN = 4000; 
const int MAXD = 4;  
int n,d,t;
int INF = numeric_limits<int>::max()/2; 

int main(){
    ios_base::sync_with_stdio(false);
    cin.tie(0);
    cin >> n >> d >> t;
 
    arr.resize(n);
    vector<int> pref(n);
    for(int i = 0; i < n; i++){
        cin >> arr[i];
    } 
    for(int i = 0; i < 1; i++){
        int time = INF;
        int cnt = 0;
        for(int j = i; j < n; j++){
            time = min(time+1, arr[j]);
            if(time <= t){
                cnt++;
            }
            pref[j] = cnt;
        }
    } 
    
    stack<int> bad;
    vector<int> suff(n);
    vector<int> btime(n, INF);
    int cnt = 0;
    for(int i = n-1; i >= 0; i--){ 
        if(arr[i] > t){
            bad.push(i); 
        }else{
            cnt++;
            while(bad.size() && btime[i]+(bad.top()-i) <= t){
                bad.pop();
                cnt++;
            }
        }

        suff[i] = cnt;
    }

    int mi = INF;
    for(int i = 0; i< n-1; i++){
        mi = min(mi, pref[i] + suff[i+1]);
    }
    cout << mi << endl;
} 
#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...