Untitled

public
6shootingstar9 May 10, 2025 Never 21
Clone
C++ paste1.cpp 54 lines (54 loc) | 933 Bytes
1
#include<bits/stdc++.h>
2
using namespace std;
3
const long long N=2e5+10;
4
long long m,d;
5
vector<long long>v;
6
long long f[N][32-__builtin_clz(N)];
7
long long query(long long l,long long r)
8
{
9
long long g=(long long)(log(r-l+1)/log(2));
10
return max(f[l][g],f[r-(1<<g)+1][g]);
11
}
12
void init(int i)
13
{
14
long long lgn=32-__builtin_clz(v.size());
15
for(long long j=1;j<=lgn;j++)
16
{
17
if((1<<(j-1))-1+i>v.size())
18
{
19
break;
20
}
21
f[i][j]=max(f[i][j-1],f[i+(1<<(j-1))][j-1]);
22
}
23
}
24
long long t=0;
25
int main()
26
{
27
cin>>m>>d;
28
while(m--)
29
{
30
char opr;
31
// scanf("%c",&opr);
32
cin>>opr;
33
if(opr=='Q')
34
{
35
long long l;
36
// scanf("%ld",&l);
37
cin>>l;
38
t=query(v.size()-l+1,v.size());
39
// printf("%ld\n",t);
40
cout<<t<<"\n";
41
}
42
else
43
{
44
long long n;
45
// scanf("%ld",&n);
46
cin>>n;
47
long long a=(n+t)%d;
48
v.push_back(a);
49
f[v.size()][0]=a;
50
init(v.size());
51
}
52
}
53
return 0;
54
}