蒟蒻看完题解才会,但是调不出来……
码风原因,看起来有点长……
#include <bits/stdc++.h>
using namespace std;
inline long long read()
{
long long ww = 0,ee = 1;
char cccch = getchar();
while (cccch < '0' || cccch > '9')
{
if (cccch == '-')
{
ee = -1;
}
cccch = getchar();
}
while (cccch >= '0' && cccch <= '9')
{
ww = ww * 10 + cccch - '0';
cccch = getchar();
}
return ww * ee;
}
const long long N = 800010;
long long a[N],b[N],sum[N],ans,num;
long long n,opt,MOD,mx,mi;
long long l,r,x,f;
char op[5];
signed main()
{
scanf("%lld%lld%lld%lld%lld",&n,&opt,&MOD,&mi,&mx);
for (long long i = 1;i <= opt;i++)
{
scanf("%s%lld%lld",&op,&l,&r);
if (op[0] == 'A')
{
scanf("%lld",&x);
b[l] += x;
b[r+1] -= x;
}
else
{
ans = 0;
num = 0;
for (long long j = 1;j <= r;j++)
{
num += b[i];
if (j >= l && (num * j) % MOD >= mi && (num * j) % MOD <= mx)
{
ans++;
}
}
printf("%lld\n",ans);
}
}
scanf("%lld",&f);
for (long long i = 1;i <= n;i++)
{
a[i] = a[i-1] + b[i];
//原数组
if ((a[i] * i) % MOD >= mi && (a[i] * i) % MOD <= mx)
{
sum[i] = sum[i-1] + 1;
}
else
{
sum[i] = sum[i-1];
}
}
for (long long i = 1;i <= f;i++)
{
scanf("%lld%lld",&l,&r);
printf("%lld\n",sum[r] - sum[l-1]);
}
return 0;
}