You are given an array of N elements which are initialized to 0. You are given a sequence of M operations of the sort (p,q,r). The operation (p,q,r) signifies that the integer r should be added to all array elements A[p],A[p + 1],…,A[q]. You are to output the maximum element in the array that would result from performing all M operations. There is a naive solution that simply performs all operations and then returns the maximum value, that takes O(MN) time. We are looking for a more efficient algorithm.
The first line will have two integers N and M separated by a space. The next M lines each have 3 integers separated by spaces. The input can be assumed to obey the following constraints:
3 ≤ N ≤ 107
1 ≤ M ≤ 2 ∗ 105
1 ≤ p ≤ q ≤ N
0 ≤ r ≤ 109
The output should be a single line containing the required maximum value.
1 3 200 2 5 50
3 6 100
The array has 6 elements initialized to 0, and there will be 3 operations.
After the first operation, the array would be [200,200,200,0,0,0].
After the second operation, the array would be [200,250,250,50,50,0].
After the third operation, the array would be [200,250,350,150,150,100]. So the required answer is the maximum value in the array, which is 350.
For the constraints given above, your program should run in 1 second. You must submit source code for a program written in C/C++/Java on the Electronic Assignment System. Some test cases will be provided on the course website. You can verify if your program works on the test cases before submitting.