有一个长度为N的浮点数数组a,索引由0开始。
定义合法的等式有以下两种:
其中i,j是合法的索引值,v是整数。
定义一个等式的集合为合法的,当且仅当至少存在一种给数组a每个元素赋值的方式,使得集合内所有等式都成立。(等式的成立是数学意义上的成立,也就是假设运算没有浮点数误差的情况下也会成立)
现在有一个等式的集合E,起初为空集合。有M个询问,每次询问会给你一个合法的等式,请问你是否能把这个等式加进去E,使得E仍是合法的,若是合法的,就把此等式真的加进去E里。(此集合为多重集合(multiset),意即可存在重复的等式,所以加入集合里原本就有的等式也算合法的。)
并且全部询问结束后,请帮数组a所有元素赋值,使其满足E中所有等式,且元素中0的数量尽可能多,若0数量最多的赋值方式有很多种,输出任意一种皆可。
输入共有1+N行。
第1行有两个正整数,依序为N,M,分别代表阵列的大小,以及询问的个数。
第2~N+1行各包含一个等式,第1+i行的等式即为第i个询问要加进去E的等式。
输出共有1+N行。
第一行包含一个由'0'与'1'组成的长度为M的字串,若第i个元素为'1',代表第i个询问的等式能成功加进去E,否则第i个元素为'0'。
对于i在范围0~N-1,第2+i行包含一个浮点数,代表你赋予a[i]的值。
对于阵列a的赋值必须满足在所有合法情况中0的数量最多,若有多种0的数量最多的方式,输出任一种皆可。
2<=N<=5*1051<=M<=106等式的长像都如a[i]+a[j]=v或a[i]-a[j]=v,i,j,v为整数0<=i,j<=v<=1000