提交时间:2023-08-16 12:15:13

运行 ID: 98660

#include<bits/stdc++.h> #define int long long using namespace std; const int N=5005; int a[N],n,m,b[N],t; int op[N],l[N],r[N],x[N]; int mp[N<<2]; signed 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]; b[++t]=a[i]; } for(int i=1; i<=m; ++i) { cin>>op[i]; if(op[i]==1) { cin>>l[i]>>r[i]>>x[i]; b[++t]=x[i]; } else cin>>l[i]>>r[i]; } sort(b+1,b+t+1); int len=unique(b+1,b+t+1)-b-1; for(int i=1; i<=n; ++i) a[i]=lower_bound(b+1,b+len+1,a[i])-b; for(int i=1; i<=m; ++i) { if(op[i]==1) { x[i]=lower_bound(b+1,b+len+1,x[i])-b; } } for(int i=1; i<=m; ++i) { if(op[i]==1) { for(int j=l[i]; j<=r[i]; ++j) a[j]=x[i]; } else { int ans=0; for(int j=l[i]; j<=r[i]; ++j) { if(mp[a[j]]==0) ans++; mp[a[j]]++; } cout<<ans<<'\n'; for(int j=l[i]; j<=r[i]; ++j) mp[a[j]]--; } } return 0; }