90求调
查看原帖
90求调
739274
AbsMatt楼主2022/8/4 15:16
#include<iostream>
using namespace std;
int n,m,a[1000005],b[1000005],ans=0,out[1000000];
int read()
{
    int a = 0,x = 1;char ch = getchar();
    while(ch > '9' || ch < '0') {ch = getchar();}
    while(ch >= '0' && ch <= '9') {a = a*10 + ch-'0';ch = getchar();}
    return a*x;
}
void print(int x){
	int p=0,pnt=x;
	if(pnt==0){
		putchar('0');
		return;
	}
	else while(pnt){
		out[p++]=pnt%10;
		pnt/=10;
	}
	for(int j=p-1;j>=0;j--)	putchar('0'+out[j]);
	putchar('\n');
}
void *calloc(int n, int size);
int main(){
	n=read();
	m=read();
	for(int i=1,k=0;i<=n;i++){
		a[i]=read();
		if(a[i]!=k)	ans++,k=a[i];
		b[a[i]]++;
	}
	for(int i=1,x,y;i<=m;i++){
		x=read();
		if(x==1){
			x=read();
			y=read();
			for(int j=1;j<=n;j++){
				if(a[j]==x){
					if(a[j-1]==x&&a[j-1]!=y)	ans++;
					if(a[j-1]==y&&a[j-1]!=x)	ans--;
					if(a[j+1]==x&&a[j+1]!=y)	ans++;
					if(a[j+1]==y&&a[j+1]!=x)	ans--;
					b[a[j]]--;
					a[j]=y;
					b[a[j]]++;
				}
				if(b[x]==0)	break;
			}
		}
		else{
			print(ans);
		}
	}
}
2022/8/4 15:16
加载中...