小红的01子序列构造(hard)
时间限制:C/C++/Rust/Pascal 2秒,其他语言4秒
空间限制:C/C++/Rust/Pascal 512 M,其他语言1024 M
Special Judge, 64bit IO Format: %lld

题目描述

\hspace{15pt}小红希望你构造一个长度为 n\tt 01 串,满足 m 个性质:对于 i \in [1, m] ,区间 [l_i, r_i] 有恰好 x_i\tt 0y_i\tt 1k_i\tt 01 子序列
\hspace{15pt}给定的限制区间为两两包含关系。即对于 i \neq j ,若 l_i \leq l_j ,则 r_i \geq r_j ,反之亦然。

\hspace{15pt}子序列为从原字符串中删除任意个(可以为零、可以为全部)字符得到的新字符串。

输入描述:

\hspace{15pt}第一行输入两个正整数 n,m \left(1\leq n,m \leq 10^5\right) 代表 \tt 01 串的长度、限制的数量。
\hspace{15pt}接下来的 m 行,每行输入五个非负整数 l_i,r_i,x_i,y_i,k_i \left(1\leq l_i \leq r_i \leq n;\ 0\leq k_i \leq 10^{10};\ 0\leq x_i,y_i \leq r_i-l_i+1;\ x_i+y_i=r_i-l_i+1\right) ,代表构造的 \tt 01 串需满足区间 [l_i,r_i] 有恰好 x_i\tt 0y_i\tt 1k_i\tt 01 子序列。
\hspace{15pt}保证给定的任意两个区间均为互相包含关系。

输出描述:

\hspace{15pt}如果答案不存在,直接输出 -1 ;否则,在一行上输出一个长度为 n\tt 01 串。

\hspace{15pt}如果存在多个解决方案,您可以输出任意一个,系统会自动判定是否正确。注意,自测运行功能可能因此返回错误结果,请自行检查答案正确性。
示例1

输入

复制
4 2
1 4 2 2 4
2 3 1 1 1

输出

复制
0011
示例2

输入

复制
4 2
1 4 2 2 3
2 3 1 1 1

输出

复制
-1