不用差分,分块怎么打,求调
查看原帖
不用差分,分块怎么打,求调
1180744
siyecao8963楼主2023/10/31 11:52
#include <stdio.h>
int main()
{
	int n,x,y,k,a[200002],b[202],q,xx,yy;
	scanf("%d %d %d",&n,&k,&q);
	for (int i=0;i<=202;i++) b[i]=0;
	for (int i=0;i<=200000;i++) a[i]=0;
	for (int i=1;i<=n;i++)
	{
		scanf("%d %d",&x,&y);
	    xx=x/1000+2;
	    yy=y/1000;
	    if (xx>yy) for (int j=x;j<=y;j++) a[j]++;else{
   	    for (int j=xx;j<=yy;j++) b[j]++;
	    for (int j=x;j<b[xx];j++) a[j]++;
	    for (int j=b[yy]+1;j<=y;j++) a[j]++;}
	}
	a[0]=0;
	for (int i=1;i<=200000;i++) {
		if (a[i]+b[i/1000+1]>=k) a[i]=1;else a[i]=0;
		a[i]=a[i]+a[i-1];
	}
	for (int i=1;i<=q;i++)
	{
		scanf("%d %d",&x,&y);
		printf("%d\n",a[y]-a[x-1]);
	}
} 
2023/10/31 11:52
加载中...