#AT2315. G - Reversible Cards 2

G - Reversible Cards 2

当前没有测试数据。

G - 可逆卡片 2

分值 : $600$ 分

问题描述

给你 NN 张卡片,编号从 11NN。 第 ii 张卡片正面有一个整数 AiA_i,背面有一个整数 BiB_i。这里,i=1N(Ai+Bi)=M\sum_{i=1}^N (A_i + B_i) = M。 对于每个 k=0,1,2,...,Mk=0, 1, 2, ..., M,解决下面的问题。

把这 NN 张卡片排列起来,使得它们的正面可见。你可以任意选择 00NN 张卡片(包括边界)并翻转它们。 为了使得正面的数的总和等于 kk,至少需要翻转多少张卡片?输出这个翻转张数。 如果没有办法通过翻转卡片使得正面的数的总和等于 kk,输出-1。

限制条件

  • 1N2×1051 \leq N \leq 2 \times 10^5
  • 0M2×1050 \leq M \leq 2 \times 10^5
  • 0Ai,BiM0 \leq A_i, B_i \leq M
  • i=1N(Ai+Bi)=M\sum_{i=1}^N (A_i + B_i) = M
  • 输入的所有值均为整数

输入

输入以以下格式从标准输入给出:

NN MM

A1A_1 B1B_1

A2A_2 B2B_2

...

ANA_N BNB_N

输出

输出 M+1M+1 行。第 ii 行应该包含 k=i1k=i-1 时的答案。


3 6
0 2
1 0
0 3
1
0
2
1
1
3
2

例如,对于 k=0k=0,只需要翻转卡片 22,使得正面的数的总和为 0+0+0=00+0+0=0。这是最优选择。 对于 k=5k=5,翻转全部的卡片,使得正面的数的总和为 2+0+3=52+0+3=5。这是最优选择。

2 3
1 1
0 1
-1
0
1
-1
5 12
0 1
0 3
1 0
0 5
0 2
1
0
1
1
1
2
1
2
2
2
3
3
4