UOJ Logo

NOI.AC

ID题目提交者结果用时内存语言文件大小提交时间测评时间
#200091#2700. 数列wosile100133ms5104kbC++11804b2023-12-28 08:57:392023-12-28 13:54:36

answer

#include<bits/stdc++.h>
using namespace std;
#define inf 0x3f3f3f3f
int a[1000005];
int n;
int pos[1000005];
int main(){
	a[0]=inf;
	scanf("%d",&n);
	for(int i=1;i<=n;i++)scanf("%d",&a[i]);
	int mn=inf,f=0;
	for(int i=1;i<=n;i++){
		f=max(f,a[i]-mn);
		mn=min(mn,a[i]);
	}
	mn=0;
	int cnt=0,lmn=inf;
	for(int i=1;i<=n;i++){
		if(a[i]-a[mn]==f && a[mn]<lmn){
			lmn=a[mn];
			pos[++cnt]=mn;
		}
		if(a[i]<a[mn])mn=i;
	}
	pos[cnt+1]=n+1;
	int ans=0;
	for(int i=1;i<=cnt;i++){
		int tot=0;
		int dp[2]={0,0};
		int L=a[pos[i]];
		int R=L+f;
		for(int j=pos[i];j<pos[i+1];j++){
			if(a[j]==L || a[j]==R)tot++;
			if(a[j]==L)dp[0]=max(dp[0],dp[1])+1;
			if(a[j]==R)dp[1]++;
		}
		ans+=tot-max(dp[0],dp[1]);
	}
	printf("%d",ans);
	return 0;
}
// quod erat demonstrandum

详细

小提示:点击横条可展开更详细的信息

Subtask #1:

score: 24
Accepted

Test #1:

score: 24
Accepted
time: 0ms
memory: 1196kb

input:

20
123333333 100000000 123333333 100000000 100000000 100000000 100000000 -46629627 -46629627 -466296...

output:

2

result:

ok single line: '2'

Subtask #2:

score: 16
Accepted

Test #2:

score: 16
Accepted
time: 0ms
memory: 1196kb

input:

100
100000000 123333333 123333333 123333333 123333333 123333333 123333333 100000000 123333333 100000...

output:

24

result:

ok single line: '24'

Subtask #3:

score: 21
Accepted

Test #3:

score: 21
Accepted
time: 0ms
memory: 1212kb

input:

5000
123333333 100000000 123333333 100000000 123333333 100000000 100000000 109260380 100000000 10778...

output:

1424

result:

ok single line: '1424'

Subtask #4:

score: 39
Accepted

Test #4:

score: 39
Accepted
time: 14ms
memory: 1588kb

input:

100000
107584386 100000000 117570850 100000000 100000000 100000000 123333333 113985760 100000000 100...

output:

32140

result:

ok single line: '32140'

Test #5:

score: 0
Accepted
time: 119ms
memory: 5104kb

input:

1000000
100000000 116429445 123333333 109196270 123333333 111215733 100000000 100000000 100000000 10...

output:

328969

result:

ok single line: '328969'

Extra Test:

score: 0
Extra Test Passed