第一个点为什么WA,90分求助!!!
查看原帖
第一个点为什么WA,90分求助!!!
730192
gaomingyang101011楼主2024/12/21 11:04
#include<iostream>
#include<algorithm>
using namespace std;
const long long N=2e5+5;
long long n;
struct node{
	long long a,w;
}a[N];
bool cmp(node s1,node s2){
	return s1.a<=s2.a;
}
pair<long long,long long> s[N];
long long ss;
long long ans;
bool pd;
long long last;
long long minn,maxx;
int main(){
	cin>>n;
	for(int i=1;i<=n;i++){
		cin>>a[i].a;
		a[i].w=i;
	}
	sort(a+1,a+1+n,cmp);
	for(int i=1;i<=n+1;i++){
		//cout<<a[i].a<<" "<<a[i].w<<endl;
		if(i==1) maxx=a[i].w,minn=a[i].w;
		if(a[i].a!=a[i-1].a||i==n+1){
			ss++;
			s[ss].second=maxx,s[ss].first=minn;
			maxx=a[i].w,minn=a[i].w;
		}
		else if(a[i].a==a[i-1].a) maxx=max(maxx,a[i].w),minn=min(minn,a[i].w);
	}
	last=0;
	for(int i=1;i<ss;i++){
		long long first=min(s[i].first,s[i].second),second=max(s[i].first,s[i].second);
		if(pd==0){
			if(second<last) last=first;
			else{
				last=second;
				ans++;
				pd=1;
			}
		}
		else{
			if(first>last) last=second;
			else{
				last=first;
				pd=0;
			}
		}
		//cout<<s[i].first<<" "<<s[i].second<<"    "<<ans<<endl;
	}
	cout<<ans;
	return 0;
}
2024/12/21 11:04
加载中...