[SOLVED] COMP6651: Programming Assignment 2

30.00 $

Programming resource
Digital learning resource
Category:
✓ Practical programming resource
✓ Suitable for guided study and reference
✓ Tutor guidance available when needed

Description

5/5 - (1 vote)

1      Problem

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.

2      Input

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

3      Output

The output should be a single line containing the required maximum value.

4      Example

Sample Input

6 3

1 3 200 2 5 50

3 6 100

Sample Output

350

Explanation

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.

5      Requirements

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.

 

Resource details

Understand the Task Before You Use the Resource

Review the requirements, identify the programming concepts involved, study the implementation and test your understanding with your own examples and modifications.