1359: 保卫战

Memory Limit:128 MB Time Limit:1.000 S
Judge Style:Text Compare Creator:
Submit:1 Solved:1

Description

H国突然对W国发起了进攻,但是W国并没有任何的准备,W国国王决定去找大法师寻求帮助,大法师说,"我可以帮助你让你的一部分士兵恢复体力,并且可以让你的士兵体力不足时继续进行战斗,但是我只能待一段时间,只要你的士兵至少有一个还有体力,那这场战斗的胜利将属于你们"。

大法师只能待m个时间单位。在每个时间单位,W国的部分士兵将受到伤害并且减少相同的体力,或者接受大法师的治疗,恢复相同的体力。你需要知道这次的战争是否会胜利,以及每个士兵的体力。国王的每个士兵编号从1到n,体力为$[a_1,a_2,...,a_i,...,a_n]$.每个时刻为(op,l,r,x) ,op=0,表示编号在[l,r]的士兵接受x的体力恢复;op=1,表示[l,r]的士兵减少x的体力

例如:
刚开始每个士兵体力为[1,2,3]

第一个时刻为(0,1,3,2)之后 变为了[3,4,5]

第二个时刻为(1,3,3,1)之后 变为了[3,4,4]

第三个时刻为(1,1,2,4)之后 变为了[-1,0,4]

编号为3的士兵体力为:4>0,因此战斗胜利

数据范围
all:  $1\leq l,r\leq n$

70 分 :$n\leq10^4,m\leq10^3$  

100分:$n\leq10^5,m\leq10^5$

Input

第一行为两个正整数n,m

第二行为n个正整数表示编号从1到n的每个士兵的体力

接下的m行为:每行四个正整数(op,l,r,x)

Output

第一行为"YES"or"NO";表示:如果有士兵还有体力(值大于0)则"YES"否则为"NO"(你无需打印双引号"")

第二行为n个整数,表示士兵的体力(可以为负数),每个正整数用一个空格隔开

Sample Input Copy

3 3
1 2 3
0 1 3 2
1 3 3 1
1 1 2 4

Sample Output Copy

YES                                           
-1 0 4 

Source/Category