Run ID | 作者 | 问题 | 语言 | 测评结果 | 分数 | 时间 | 内存 | 代码长度 | 提交时间 |
---|---|---|---|---|---|---|---|---|---|
98673 | CSYZChenQX | Karry5307 | C++ | 运行超时 | 0 | 1000 MS | 4068 KB | 1029 | 2023-08-16 12:18:15 |
#include<bits/stdc++.h> using namespace std; const int MX = 2e5 + 5; int n, m, num, ans; int a[MX], b[MX]; int opt[MX], l[MX], r[MX], x[MX]; int vis[MX]; int main() { cin>>n>>m; num = n; for(int i=1; i<=n; i++) scanf("%d", &a[i]), b[i] = a[i]; for(int i=1; i<=m; i++) { scanf("%d%d%d", &opt[i], &l[i], &r[i]); if(opt[i]==1) scanf("%d", &x[i]); b[++num] = x[i]; } sort(b+1, b+num+1); num = unique(b+1, b+num+1)-b; for(int i=1; i<=n; i++) a[i] = lower_bound(b+1, b+num+1, a[i])-b; for(int i=1; i<=m; i++) { ans = 0; memset(vis, 0, sizeof(vis)); if(opt[i] == 1) { x[i] = lower_bound(b+1, b+num+1, x[i])-b; for(int j=l[i]; j<=r[i]; j++) a[j] = x[i]; } else { for(int j=l[i]; j<=r[i]; j++) vis[a[j]] ++; for(int j=1; j<=num; j++) if(vis[j]) ans ++; printf("%d\n", ans); } } return 0; }