求调
查看原帖
求调
566833
遥遥领先楼主2023/9/1 15:57

蒟蒻看完题解才会,但是调不出来……

码风原因,看起来有点长……

#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;
}
2023/9/1 15:57
加载中...