QOJ.ac

QOJ

IDProblemSubmitterResultTimeMemoryLanguageFile sizeSubmit timeJudge time
#883695#9961. CowswdnmdwrnmmpWA 0ms3712kbC++141.1kb2025-02-05 18:05:352025-02-05 18:05:35

Judging History

This is the latest submission verdict.

  • [2025-02-05 18:05:35]
  • Judged
  • Verdict: WA
  • Time: 0ms
  • Memory: 3712kb
  • [2025-02-05 18:05:35]
  • Submitted

answer

#include<bits/stdc++.h>
using namespace std;
#define endl '\n'
typedef long long LL;
const int MAXN=2e5+5;
int n,a[MAXN];
bool check(int mid) {
	int k=0,len=0,l,r;
	for(int i=1;i<=n;++i) {
		int nk,nlen,nl,nr;
		if(k==0) {
			if(a[i]<=mid-len+1) nk=0,nlen=mid-a[i];
			else if(a[i]>mid+len) nk=1,nl=2*mid+len-a[i]+1,nr=mid;
			else nk=0,nlen=len-(a[i]-(mid-len)+1)/2;
		}
		if(k==1) {
			if(a[i]<l-1) nk=2,nl=a[i]+1,nr=l-1,nlen=mid-r;
			else if(a[i]==l-1) nk=0,nlen=mid-r;
			else nk=1,nl=2*l-a[i]-1,nr=l-1;
		}
		if(k==2) {
			if(a[i]<=l) nk=0,nlen=mid-a[i];
			else if(a[i]>mid+len+(r-l+1)) nk=1,nl=2*mid-a[i]+len+r-l+2,nr=mid;
			else if(a[i]>(mid-len)+(r-l+1)) nk=0,nlen=len-(a[i]-(mid-len)-(r-l+1)+1)/2;
			else if(a[i]>r+(r-l+1)) nk=0,nlen=mid-(a[i]-(r-l+1));
			else nk=0,nlen=mid-(l-1+(a[i]-(l-1)+1)/2);
		}
		k=nk,len=nlen,l=nl,r=nr;
		if(k==1&&l<=0) return 0;
	}
	return k!=1;
}
signed main() {
	ios::sync_with_stdio(0),cin.tie(0);
	cin>>n;
	for(int i=1;i<=n;++i) cin>>a[i];
	int l=0,r=1e9,ans=0;
	while(l<=r) {
		int mid=(l+r)>>1;
		if(check(mid)) r=mid-1,ans=mid;
		else l=mid+1;
	}
	cout<<ans;
	return 0;
}

Details

Tip: Click on the bar to expand more detailed information

Test #1:

score: 100
Accepted
time: 0ms
memory: 3712kb

input:

5
5 4 0 4 6

output:

4

result:

ok 1 number(s): "4"

Test #2:

score: 0
Accepted
time: 0ms
memory: 3584kb

input:

3
1 4 6

output:

5

result:

ok 1 number(s): "5"

Test #3:

score: -100
Wrong Answer
time: 0ms
memory: 3584kb

input:

1
1

output:

0

result:

wrong answer 1st numbers differ - expected: '1', found: '0'