代码:
using namespace std;
int N,K,M;
int a[500039];
int Next[500039];
int p[500039];
int d[500039];
int num;
bool b;
char ch;
int ans;
int main(){
freopen("1.in","r",stdin);
scanf("%d%d%d",&N,&K,&M);
memset(Next,0x3f,sizeof(Next));
for(int i=1;i<=M;i++){
scanf("%d",&a[i]);
}
for(int i=M;i>=1;i--){
if(p[a[i]]!=0)Next[i]=p[a[i]];
p[a[i]]=i;
}
num=0;
memset(p,0,sizeof(p));
for(int i=1;i<=M;i++){
if(p[a[i]]==0){
ans++;
if(num<K){
p[a[i]]=1;
}
else{
int maxn=-1000,maxm=-1;
for(int k=1;k<=i;k++){
if(p[k]&&maxn<Next[a[k]]){
maxn=Next[a[k]];
maxm=k;
}
if(Maxn==0x3f)break;
}
p[maxm]=0;
p[a[i]]=1;
num--;
}
}
num++;
}
printf("%d\n",ans);
return 0;
}
仅有10分,其余都wa了