求助,全部RE
查看原帖
求助,全部RE
317008
青溪白石楼主2022/10/15 10:44
#include<iostream>
#define LL long long
#define max(a, b) a > b ? a : b
using namespace std;
const int maxn = 2 * 1e5 + 10;
struct Node{
	int l, r;
	LL maxx;
}node[4 * maxn];
void build(int l, int r, int num){
	node[num].l = l;
	node[num].r = r;
	node[num].maxx = 0;
	if(l == r) return;
	int mid = ((l + r) >> 1);
	build(l, mid, num * 2);
	build(mid + 1, r, num * 2 + 1);
	return;
}
void charu(int a, int x, int num){
	node[num].maxx = max(node[num].maxx, a);
	if(node[num].l == node[num].r) return;
	int mid = ((node[num].l = node[num].r) >> 1);
	if(x <= mid) charu(a, x, num * 2);
	else charu(a, x, num * 2 + 1);
}
LL chaxun(int l, int r, int num){
	int mid = ((node[num].l + node[num].r) >> 1);
	LL a = 0;
	if(l <= node[num].l && r >= node[num].r) return node[num].maxx;
	if(l <= mid) a = max(a, chaxun(l, r, num * 2));
	if(r > mid) a = max(a, chaxun(l, r, num * 2 + 1));
	return a;
}
int main(){
	int M, D, cnt = 0;
	LL last = 0;
	cin >> M >> D;
	build(0, D, 1);
	while(M--){
		char c;
		LL a;
		cin >> c >> a;
		if(c == 'Q'){
			last = chaxun(cnt - a, cnt - 1, 1);
			cout << last;
		}
		if(c == 'A'){
			cout << (a + last) % D;
			charu((a + last) % D, cnt, 1);
			cnt++;
		}
		cout << endl;
	}
	return 0;
}
2022/10/15 10:44
加载中...