U161533 自创算法与 bitset 的时间复杂度

题目背景

# [blog](https://www.luogu.com.cn/blog/wangxiwen/you-hua-bool-shu-zu-kong-jian)

题目描述

小 W 有个 `bool` 数组 $b$,大小为 $n$,第一个数为 $b[1]$,初始值默认为 $0(false)$。 现在他要改变这个数组,他有 $4$ 个操作。 每一个操作最开始有一个数 $op$。 * $op=1$,`change` 操作:`op x turn`,将 $x$ 位置的布尔值改成 $turn\ (0/1)$。 * $op=2$,`find` 操作:`op x`,求出 `x` 位置当前的布尔值。 * $op=3$,`allReset` 操作:`op turn`,将整个数组全重置为 $turn\ (0/1)$。 * $op=4$,`count` 操作:`op c`,求出整个数组中有多少个 $c\ (0/1)$。 数据保证查询的位置为 $1 \sim n$。

输入格式

第一行两个正整数 $n,m$,$n$ 表示 `bool` 数组的长度,$m$ 表示操作个数。 接下来 $m$ 行,每行有 $2 \sim 3$ 个数,第一个数为 $op$。 * $op=1$,接着有 $2$ 个数,为 $x,turn$(如题意所述)。 * $op=2$,接着有 $1$ 个数,为 $x$。 * $op=3$,接着有 $1$ 个数,为 $turn$。 * $op=4$,接着有 $1$ 个数,为 $c$。

输出格式

每个查询输出数,换行。

说明/提示

只有一个测试点,$n=10^9,m=10^6$,总操作 `allReset` 个数 $\le 5$。