#HK4782. 「RMI 2019」Restore Array

「RMI 2019」Restore Array

题目描述

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

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

输入格式

输入的第一行包含两个整数 NN 和 MM (1≤N≤5000,1≤M≤10000)(1 \leq N \leq 5000,1 \leq M \leq 10000),表示数组 AA 的长度和约束条件的数量。 接下来的 mm 行描述了这些约束条件。每行包含四个整数 li,ri,ki,valueil_i, r_i, k_i, 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,原因如下:

  1. 在子数组 0 1 0 0 中,第 22 小的元素是 1。
  2. 在子数组 0 1 0 0 中,第 22 小的元素是 0。
  3. 在子数组 0 1 0 0 中,第 11 小的元素是 0。
  4. 在子数组 0 1 0 0 中,第 11 小的元素是 0。
  5. 在子数组 0 1 0 0 中,第 11 小的元素是 0。

数据范围与提示

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

子任务 分值 附加限制
11 77 1≤N≤18,1≤m≤2001 \leq N \leq 18,1 \leq m \leq 200
22 1313 1≤N≤5000,1≤m≤100001 \leq N \leq 5000,1 \leq m \leq 10000,所有约束中 k=1k=1
33 2525 1≤N≤5000,1≤m≤100001 \leq N \leq 5000,1 \leq m \leq 10000,所有约束中 k=1k=1 或 k=r−l+1k=r-l+1
44 5555 1≤N≤5000,1≤m≤100001 \leq N \leq 5000,1 \leq m \leq 10000