Run ID | 作者 | 问题 | 语言 | 测评结果 | 分数 | 时间 | 内存 | 代码长度 | 提交时间 |
---|---|---|---|---|---|---|---|---|---|
98644 | CSYZ_ChenHL | Karry5307 | C++ | 运行超时 | 10 | 1000 MS | 10612 KB | 1018 | 2023-08-16 12:11:05 |
#include<bits/stdc++.h> using namespace std; map<int,int> mp; int n,m; int a[200010],ls[100010],len; int num[200010],cnt; struct jgt { int opt,l,r,x; }cg[100010]; int main() { // freopen("karry5307.in","r",stdin); // freopen("karry5307.out","w",stdout); cin>>n>>m; len=n; for(int i=1;i<=n;i++) { cin>>ls[i]; a[i]=ls[i]; } for(int i=1;i<=m;i++) { cin>>cg[i].opt>>cg[i].l>>cg[i].r; if(cg[i].opt==1) { cin>>cg[i].x; a[++len]=cg[i].x; } } sort(a+1,a+1+len); for(int i=1;i<=len;i++) if(!mp.count(a[i])) mp[a[i]]=++cnt; for(int i=1;i<=n;i++) ls[i]=mp[ls[i]]; for(int i=1;i<=m;i++) { int opt=cg[i].opt; int l=cg[i].l; int r=cg[i].r; int x=cg[i].x; if(opt==2) { memset(num,0,sizeof(num)); int ans=0; for(int j=l;j<=r;j++) { if(num[ls[j]]==0) { num[ls[j]]=1; ans++; } } cout<<ans<<endl; } else { x=mp[x]; for(int i=l;i<=r;i++) ls[i]=x; } } return 0; }