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;
}