天天看点

Modern Art 2 (栈)

Modern Art 2 (栈)

#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
const int N=1e5+5,M=2e4+5,inf=0x3f3f3f3f,mod=1e9+7;
#define mst(a,b) memset(a,b,sizeof a)
#define PII pair<int,int>
#define fi first
#define se second
#define pb push_back
int n,sk[N],top,col[N];
struct node{
	int l,r;
}a[N]; 
int main(){
	scanf("%d",&n);
	for(int i=1;i<=n;i++){
			scanf("%d",&col[i]);
		if(!col[i]) continue;
		if(!a[col[i]].l) a[col[i]].l=i;
		a[col[i]].r=i;	
	}
	int ans=0;
	for(int i=1;i<=n;i++){
		int x=col[i];
		if(i==a[x].l){
			sk[++top]=x;
			ans=max(ans,top);
		}
		if(a[x].r==i){
			if(sk[top]!=x)
			return puts("-1"),0;
			top--;
		}
	}
	printf("%d\n",ans);
	return 0;
}