洛谷P5640,50'暴力
#include <bits/stdc++.h>
using namespace std;
const int N=1e6+5;
int a[N],b[7005];
int n,m,flag1=3500,flag2=3500,ans,dp[2][3339],flag[3339];
int main()
{
ios::sync_with_stdio(0);
cin.tie(0);cout.tie(0);
cin >> n >> m;
for(int i=1;i<=n;i++)
cin >> a[i];
for(int i=0;i<=3338;i++)
{
dp[0][i]=1;
}
memset(flag,0,sizeof(flag));
for(int i=1;i<=m;i++)
{
int opt,ch;
cin >> opt >> ch;
ans=0;
if(opt==0)
{
for(int x=i;x>=1;x--)
{
if(dp[0][x-1]==1)
{
if(ch!=a[x])
{
ans++;
dp[1][x]=1;
}
else dp[1][x]==0;
}
else
{
dp[1][x]==0;
}
}
for(int i=0;i<=3338;i++)
{
dp[0][i]=dp[1][i];
}
dp[0][0]=1;
b[flag2++]=ch;
flag[i]=ans;
}
else
{
ans=flag[i-1];
b[flag1--]=ch;
int temp=i,flag3=1;
for(int x=1,y=flag1+1;x<=temp;x++,y++)
{
if(b[y]==a[x])flag3=0;
}
if(flag3)
{
dp[0][i]=1;
ans++;
}
else
{
dp[0][i]=0;
}
flag[i]=ans;
}
cout << ans << endl;
}
return 0;
}