#L4782. 「RMI 2019」Restore Array

    ID: 3983 传统题 1000ms 256MiB 尝试: 1 已通过: 1 难度: 10 上传者: 标签>差分约束系统图论最短路径SPFA算法负环检测前缀和技巧

「RMI 2019」Restore Array

题目描述

题目译自 Romanian Master of Informatics 2019 Day1 T3 「Restore Array」

你的任务是根据 MM 个给定的约束条件,确定一个长度为 NN 的二进制数组 AA。每个约束条件的形式为:(l,r,k,value)(l, r, k, \text{value}) (0lr<N0 \leq l \leq r < N, 1krl+11 \leq k \leq r-l+1, 0value10 \leq \text{value} \leq 1),表示子数组 A[lr]A[l\ldots r] 中第 kk 小的元素是 value\text{value}。请注意,数组 AA 的编号从 00 开始。


输入格式

输入的第一行包含两个整数 NNMM (1N50001 \leq N \leq 5000, 1M100001 \leq M \leq 10000),表示数组 AA 的长度和约束条件的数量。

接下来的 MM 行描述了这些约束条件。每行包含四个整数 li,ri,ki,valueil_i, r_i, k_i, \text{value}_i,描述第 ii 个约束。


输出格式

输出的第一行包含 NN 个整数,表示一个可能的二进制数组 AA。如果存在多个符合所有 MM 个约束条件的数组,你可以输出其中任意一个。如果不存在这样的数组,则输出单个整数 1-1


样例

输入

4 5
0 1 2 1
0 2 2 0
2 2 1 0
0 1 1 0
1 2 1 0

输出

0 1 0 0

存在多个二进制数组能够满足所有约束条件,其中一个是 0 1 0 0,原因如下:

  • 在子数组 [0, 1] 中,第 22 小的元素是 11
  • 在子数组 [0, 1, 0] 中,第 22 小的元素是 00
  • 在子数组 [0] 中,第 11 小的元素是 00
  • 在子数组 [0, 1] 中,第 11 小的元素是 00
  • 在子数组 [1, 0] 中,第 11 小的元素是 00

数据范围与提示

详细子任务附加限制及分值如下表所示。

子任务 分值 附加限制
1 7 1N181 \leq N \leq 18, 1m2001 \leq m \leq 200
2 13 1N50001 \leq N \leq 5000, 1m100001 \leq m \leq 10000,所有约束中 k=1k=1
3 25 1N50001 \leq N \leq 5000, 1m100001 \leq m \leq 10000,所有约束中 k=1k=1k=rl+1k=r-l+1
4 55 1N50001 \leq N \leq 5000, 1m100001 \leq m \leq 10000