样例AC但0pts求助
查看原帖
样例AC但0pts求助
1181602
Cute_Furina楼主2025/7/22 10:18
#include<bits/stdc++.h>
using namespace std;
int w[500005], mod, T, q;
bool InRange(int l, int r, int L, int R) {
	return (l >= L) && (r <= R);
}
bool OutofRange(int l, int r, int L, int R) {
	return (l > R) || (r < L);
}
void pushup(int u) {
	w[u] = w[u * 2] * w[u * 2 + 1];
	w[u] %= mod;
}
void update(int u, int l, int r, int L, int R, int x) {
	if(InRange(l, r, L, R)) {
		w[u] = x;
		return ;
	}
	if(OutofRange(l, r, L,R)) {
		return ;
	}
	int mid = l + r >> 1;
	update(u * 2, l, mid, L, R, x);
	update(u * 2 + 1, mid + 1, r, L, R, x);
	pushup(u);
}
void build(int u, int l, int r) {
	if(l == r) {
		w[u] = 1;
		return ;
	}
	int mid = l + r >> 1;
	build(u * 2, l, mid);
	build(u * 2 + 1, mid + 1, r);
	pushup(u);
}
signed main() {
	cin >> T;
	while(T --) {
		cin >> q >> mod;
		build(1, 1, q);
		for(int i = 1;i <= q;i ++) {
			int op, m;
			cin >> op >> m;
			if(op == 1) {
				update(1, 1, q, i, i, m);
				w[1] %= mod;
				cout << w[1] << endl;
			}
			else {
				update(1, 1, q, m, m, 1);
				w[1] %= mod;
				cout << w[1] << endl;
			}
		}
	}
} 
2025/7/22 10:18
加载中...