| 比赛 | EYOI暨SBOI暑假快乐赛3rd | 评测结果 | AAAAAAAAAAAAAAAAAAAA | 
    | 题目名称 | Convoluted Intervals | 最终得分 | 100 | 
    | 用户昵称 | 遥时_彼方 | 运行时间 | 0.854 s | 
    | 代码语言 | C++ | 内存使用 | 0.00 MiB | 
    | 提交时间 | 2022-06-27 11:03:15 | 
显示代码纯文本
#include<bits/stdc++.h>
#define ll long long
using namespace std;
char ra;
int rp=0;
inline void read(int &x)
{
	x&=0;
	rp=1;
	ra=getchar();
	while(ra<'0'||ra>'9') 
	{
		if(ra=='-') rp=-1;
		ra=getchar();
	}
	while(ra>='0'&&ra<='9') 
	{
		x=(x<<3)+(x<<1)+(ra^48);
		ra=getchar();
	}
	x*=rp;
} 
inline void write(ll x)
{
	if(x/10) write(x/10);
	putchar(x%10+48);
}
///////////
int nc;
int mc;
int n[200005][2];
ll a[20001];//起始计数
ll b[20001];//结束计数 
ll c[20001];//结束计数 
ll ans[20001];
int main()
{
	freopen("Convoluted_Intervals.in","r",stdin);
	freopen("Convoluted_Intervals.out","w",stdout);
    read(nc);
    read(mc);
    for(int i=1;i<=nc;i++)
    {
    	read(n[i][0]);
    	read(n[i][1]);
    	a[n[i][0]]++;
    	b[n[i][1]+1]++;
		c[n[i][1]]++; 
	}
	for(int i=0;i<=mc;i++)
	{
		if(a[i]) for(int o=0;o<=mc;o++)	ans[i+o]+=a[i]*a[o];
		if(c[i]) for(int o=0;o<=mc+1;o++) ans[i+o]-=c[i]*b[o];
	}
	write(ans[0]);
	putchar(10);
	for(int i=1;i<=(mc<<1);i++)
	{
		ans[i]+=ans[i-1];
		write(ans[i]);
		putchar(10);
	}
	return 0;
}