#U2122DS3. Convoluted Intervals

Convoluted Intervals

奶牛们正在努力尝试发明有趣的新游戏来玩。他们目前的工作之一与一组 N 个区间(1≤N≤2⋅105^5)有关,其中第 i 个区间从数轴上的 ai_i 位置开始,并在位置 bi_i≥ai_i 结束。ai_i 和 bi_i 均为 0…M 范围内的整数,其中 1≤M≤5000。这个游戏的玩法是,Bessie 选择某个区间(假设是第 i 个区间),而她的表妹 Elsie 选择某个区间(假设是第 j 个区间,可能与 Bessie 所选的的区间相同)。给定某个值 k,如果 ai_i+aj_j≤k≤bi_i+bj_j,则她们获胜。

对范围 0…2M 内的每个值 k,请计算使得 Bessie 和 Elsie 可以赢得游戏的有序对 (i,j) 的数量。

输入格式(从终端 / 标准输入读入):

输入的第一行包含 N 和 M。以下 N 行每行以整数 ai_i 和 bi_i 的形式描述一个区间。

输出格式(输出至终端 / 标准输出):

输出 2M+1 行,依次包含范围 0…2M 中的每一个 k 的答案。

输入样例:

2 5
1 3
2 5

输出样例:

0
0
1
3
4
4
4
3
3
1
1

在这个例子中,对于 k=3,有三个有序对可以使得 Bessie 和 Elsie 获胜:(1,1),(1,2),和 (2,1)。

测试点性质:

  • 测试点 1-2 满足 N≤100,M≤100。
  • 测试点 3-5 满足 N≤5000。
  • 测试点 6-20 没有额外限制。

注意输出可能无法用 32 位整数型存储,你可能需要使用 64 位整数型(例如,C 或 C++ 中的 "long long")。