#P1165. 值班安排

    ID: 177 传统题 1000ms 128MiB 尝试: 0 已通过: 0难度: 提高 ← 上一题 下一题 → 随机一题 上传者: 标签 图论 差分约束 最短路 Bellman-Ford 前缀和
显示设置

值班安排

题目描述

一条巡逻路线上有 nn 个岗哨,依次编号 1∼n1\sim n。记 sis_i 为前 ii 个岗哨中安排的值班人数(s0=0s_0=0)。

安排必须满足:相邻两个岗哨之间最多新增 11 人,即对每个 1≤i≤n1\le i\le n 有 0≤si−si−1≤10\le s_i-s_{i-1}\le 1。

上级还给出了 mm 条要求,第 jj 条形如「第 ljl_j 到第 rjr_j 个岗哨中」:

  • 类型 11:至少安排 kjk_j 人;
  • 类型 22:至多安排 kjk_j 人;
  • 类型 33:恰好安排 kjk_j 人。

请在所有要求都能满足的前提下,求出 nn 个岗哨安排人数的最小值。若要求互相矛盾,输出 −1-1。

输入格式

第一行两个整数 n,mn,m。

接下来 mm 行,每行四个整数 lj,rj,kj,tjl_j,r_j,k_j,t_j,含义如上。

输出格式

一行一个整数,表示最少安排的总人数;矛盾时输出 −1-1。

输入输出样例 #1

输入 #1

3 1
1 3 2 3

输出 #1

2

输入输出样例 #2

输入 #2

2 1
1 1 2 1

输出 #2

-1

说明

数据范围

  • 对于 100%100\% 的数据,1≤n≤50001\le n\le 5000,0≤m≤50000\le m\le 5000,1≤lj≤rj≤n1\le l_j\le r_j\le n,0≤kj≤n0\le k_j\le n,tj∈{1,2,3}t_j\in\{1,2,3\}。