Submission #583527

#TimeUsernameProblemLanguageResultExecution timeMemory
583527WongChun1234The short shank; Redemption (BOI21_prison)C++14
0 / 100
227 ms11080 KiB
#include<bits/stdc++.h>
using namespace std;
const int N=2000050;
int n,d,tf,curry,t[N],pref[N],suff[N],ans=INT_MAX;
int main(){
	cin>>n>>d>>tf;
	for (int i=1;i<=n;i++){
		cin>>t[i];
	}
	curry=0;
	for (int i=1;i<=n;i++){
		pref[i]=pref[i-1];
		if (curry>=i){
			pref[i]++;
			if (t[i]<=tf) curry=max(curry,i+tf-t[i]);
		}else if (t[i]<=tf){
			pref[i]++;
			curry=i+tf-t[i];
		}
	}
	curry=n+1;
	for (int i=n;i;i--){
		suff[i]=suff[i+1];
		if (t[i]<=tf){
			suff[i]++;
			if (i+tf-t[i]<curry) suff[i]+=tf-t[i];
			else suff[i]+=curry-i-1;
			curry=i;
		}
		ans=min(ans,pref[i-1]+suff[i]);
	}
	cout<<ans<<"\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...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...