提交时间:2023-08-16 12:09:44
运行 ID: 98635
#include <iostream> #include <cstdio> #include <map> using namespace std; const int N = 1e5 + 5; int n, m, a[N], sum[N]; int read() { char c = getchar(); int sum = 0, f = 1; while (c < '0' || c > '9') { if (c == '-') { f = -1; } c = getchar(); } while (c >= '0' && c <= '9') { sum = (sum << 1) + (sum << 3) + (c ^ 48); c = getchar(); } return sum * f; } int main() { cin >> n >> m; for (int i = 1; i <= n; ++ i) { cin >> a[i]; } if (n <= 5e3 && m <= 5e3) { for (int i = 1; i <= m; ++ i) { int opt, l, r, x; cin >> opt; if (opt == 1) { cin >> l >> r >> x; for (int i = l; i <= r; ++ i) { a[i] = x; } } else { map<int, int> m; cin >> l >> r; int ans = 0; for (int i = l; i <= r; ++ i) { m[a[i]] ++; ans += (m[a[i]] == 1); } cout << ans << '\n'; } } } }