#P12358. [eJOI 2024] 奶酪交易 / Cheese

[eJOI 2024] 奶酪交易 / Cheese

题目描述

最近,一群农夫开始在 EJOI 大陆上售卖他们的奶酪。每个农夫的奶酪都有固定的价格。

EJOI 大陆的零钱面额均为 22 的幂,即 1,2,4,8,1,2,4,8,\dots 等等。

一天,农夫们将自己的奶酪带到一个集市上售卖。在一次交易中,农夫们需要给出自己的零钱来购买对方的奶酪。例如 Sanda 的奶酪比 Victor 的便宜 22 块钱,则一种可能的交易方式是二人交换奶酪,Sanda 给 Victor 一张 88 块钱,Victor 给 Sanda 一张 22 块和一张 44 块。这样双方得到的就平衡了。

市场的负责人注意到了这些有趣的交易,于是他将其全部记录在本子上,具体而言,他是这么记录的:

对于每次交易,首先记录两位农民,分别是 iijj,接下来两个数 AABBAA 表示 ii 最开始付的零钱数,而 BB 则表示:

  • B=1B=-1,那么没有找零,即 jj 不用给 ii 任何钱。

  • 否则,BB 表示 jjii 找零的钱中,面值最小的一张的面值。

由于负责人有些粗心,有些可能记录错了。作为负责人的朋友,你需要帮助他找到哪些记录是与前面记录矛盾的。

译者注:若你无法理解题面,请参考样例解释。

输入格式

第一行,两个正整数 NNMM,分别表示农夫数量和交易数量。

接下来 MM 行,每行四个整数 i,j,A,Bi,j,A,B,表示记录一次交易。

输出格式

对于每次交易,如果这次交易记录与前面不矛盾,输出 1;否则输出 0

4 10
1 2 5 -1
1 2 5 16
2 3 0 4
2 1 1 2
1 3 0 8
1 3 1 8
2 3 16 8
3 2 12 -1
1 4 2 8
4 3 1 4
1
1
1
1
0
1
0
1
1
0

提示

【样例解释】

共有 1010 次交易:

  • 第一次:1 2 5 -111 号农夫给了 22 号农夫 55 块,由于 B=1B=-1,所以我们可以知道 11 号奶酪比 22 号奶酪便宜 55 块,这显然没有矛盾。

  • 第二次:1 2 5 1611 号农夫给了 22 号农夫 55 块,两人在找零过程中使用的最小面值是 1616。有一种可能的情况是,找零时,11 号给 22 号了 1616 块,22 号给 11 号了 1616 块(是的,这是可能的!),这样就不与第一条记录矛盾。

  • 第三次:2 3 0 422 号农夫给了 3300 块,他们在找零时使用最小面值是 44。因为目前还没有关于 2233 的交易,所以这次显然不矛盾。

  • 第四次:2 1 1 222 号农夫给了 11 号农夫 11 块,他们找零最小面值为 22 块。此时,可能是 11 号给了 22 号三张 22 块,这样他们两个奶酪价格差仍然是 55 块,也不矛盾。

  • 第五次:1 3 0 8,这次不管如何都不能满足条件,因此矛盾。

剩下 55 次交易,请选手自行模拟。


【数据范围】

本题采用 Subtask\text{Subtask} 捆绑测试。

Subtask\text{Subtask} 分值 特殊性质
11 77 2N,M102\le N,M\le10
22 88 B=2B=2
33 1111 B=1B=-1
44 1919 3N103\le N\le10
55 3838 B=1,2,4,8,16,32B=1,2,4,8,16,32
66 1717

对于 100%100\% 的数据,$2\le N,M\le5\times10^5,1\le i,j \le N,i\not =j,0\le A\le2^{15},B=-1$ 或 B=1,2,4,8,,214,215B=1,2,4,8,\dots,2^{14},2^{15}