题目描述
在一条由西向东的公路上有 n 个路口,编号从 1 到 n,第 i 个路口距离公路的起点 ai 公里。每个路口都有一个加油站。有 m 辆卡车将要在这条公路上行驶。
每一辆卡车都可以用 4 个整数来表示:起点 si,终点 fi,每公里耗油量 ci,以及最多可以加油的次数 ri。也就是说,对于第 i 辆卡车,它需要从第 si 个路口行驶到第 fi 个路口,它每行驶一公里要消耗 ci 升汽油,它可以在中间经过的加油站中选择最多 ri 个加油站加油。在经过的路口加油都会让卡车的邮箱加满。卡车在出发的时候油箱是满的。
你需要为所有的卡车设计一款公用容量为 V 升的油箱,使每一辆卡车都能在满足上述条件的情况下行驶完它们对应的行程。求这个最小的 V。
输入格式
输入的第一行包含两个整数 n 和 m,以一个空格分隔,分别表示路口和卡车的数量(2≤n≤400,1≤m≤250000)。
输入的第二行包含 n 个整数 a1,a2,…,an(1≤ai≤109,ai<ai+1),两两之间以一个空格分隔,表示每一个路口距离公路起点的公里数。
接下来 m 行,每行包含 4 个整数。其中第 i 行包含 4 个整数 si,fi,ci,ri(1≤si<fi≤n,1≤ci≤109,0≤ri≤n),表示第 i 辆卡车的相关信息(具体见题目描述)。
输出格式
输出一个整数,表示最小的满足条件的油箱容量 V 。
样例
7 6
2 5 7 10 14 15 17
1 3 10 0
1 7 12 7
4 5 13 3
4 7 10 1
4 7 10 1
1 5 11 2
55
样例解释
- 第 1 辆卡车(2→7)中途不加油,至少需要 50 升汽油;
- 第 2 辆卡车(2→17)可以选择在途中的每个路口都加一次油,至少需要 48 升汽油;
- 第 3 辆卡车(10→14)中途没有路口,至少需要 52 升汽油;
- 第 4 辆卡车(10→17)可以选择在第 5 个路口加油(对应位置 14),至少需要 40 升汽油;
- 第 5 辆卡车(10→17)和第 4 辆卡车的信息完全相同,所以其也至少需要 40 升汽油;
- 第 6 辆卡车(2→15)可以加两次汽油,第一次可以选择第 2 或 3 个路口,第二次选择第 4 路口,至少需要 55 升汽油。
数据范围
- 对于 10% 的数据,保证 n,m≤10;
- 对于 20% 的数据,保证 n≤100,m≤1000;
- 对于 40% 的数据,保证 n≤400,m≤10000;
- 对于 100% 的数据,保证 2≤n≤400,1≤m≤250000,1≤ai≤109,ai<ai+1,1≤si<fi≤n,1≤ci≤109,0≤ri≤n。