哪里假了
查看原帖
哪里假了
664744
_lqs_楼主2023/4/7 19:07
#include<bits/stdc++.h>
using namespace std;
int n,m,i,j,ans,p;
int a[1000005],b[1000005];
std::map<int,int>s;
int main(){
	scanf("%d%d",&n,&m);
	for(i=1;i<=n;i++) scanf("%d",&a[i]);
	if(m==0){
		for(i=1;i<=n;i++){
			if(a[i]) ans++,b[i]=0;
		} 
		printf("%d\n",ans);
		for(i=1;i<=n;i++) printf("%d ",b[i]);
		return 0;
	}
	for(i=1;i<=n;i++){
		if(s[a[i]]==0 && a[i]<m) p++,s[a[i]]=1;
		if(p==m){
			ans++;
			b[i]=m;
			s.clear(),p=0;
		}
		else b[i]=a[i];
	}
	printf("%d\n",ans);
	for(i=1;i<=n;i++) printf("%d ",b[i]);
	return 0;
}

用了 map,求调。

2023/4/7 19:07
加载中...