Given an array numbered from 1 to N, you need to perform M operations. Each operation is described by 3 values a, b and k. Now, k is added for the range of values starting from index 'a' and ending at index 'b' in the given array. Now, After M operations, you have to calculate the average of the values in the array.
Initialize the array to '0' before starting to perform M operations.
 
Consider the number of elements (N) = 5
Number of operations to perform (M) = 4
When M=1,
a=1, b=2, k=100
When M=2,
a=2, b=5, k=100
When M=3,
a=3, b=4, k=100
Initially the array is 0 0 0 0 0
First operation 100 100 0 0 0
Second operation 100 200 100 100 100
Third operation 100 200 200 200 100
Total = 800, Average = 800/5 = 160
Method 1: (Brute Force)
Implementation:
Initialize the array to '0' before starting to perform M operations.
Consider the number of elements (N) = 5
Number of operations to perform (M) = 4
When M=1,
a=1, b=2, k=100
When M=2,
a=2, b=5, k=100
When M=3,
a=3, b=4, k=100
Initially the array is 0 0 0 0 0
First operation 100 100 0 0 0
Second operation 100 200 100 100 100
Third operation 100 200 200 200 100
Total = 800, Average = 800/5 = 160
Method 1: (Brute Force)
Implementation:
#include <stdio.h>
#include <string.h>
#include <math.h>
#include <stdlib.h>
/* Maximum size that an integer array can hold */
#define max 1000000
int main() 
{
    int a,b,i;
     
    /*largest data type for an integer type data */
    unsigned long long int N,M,k,Arr[max],total = 0,average;
    /* N - Number of elements of the array
       M - Number of Operations to be performed in the array */
    scanf("%llu %llu", &N, &M);
    /* Initialize the elements of the array to "0" , for "N" elements*/
    for ( i = 0;i < N; i++ )
    {
        /* Assign value "0" to A[0],A[1],A[2],....A[N-1] */
        Arr [ i ] = 0;
    }
    /* For every "M" operation, get the range "a & b" and the value to increment the array - "k" */
    while(M > 0)
    {
        /* Lower index - a, 
           Upper index - b, 
           value to be added - k */
        scanf("%d %d %llu", &a, &b, &k);
        /* a. Loop over the range a & b,
           b. Increment the elements of the array within the range with value "k" */
        for ( i = a - 1;i <= b - 1; i++)
        {
            Arr[ i ] = Arr[ i ] + k;
        }
        /* Decrements "M" till it becomes zero */
        M--;
    }
    /* Find the sum of the elements of the array after "M" Queries. Note that "total is initialized as zero while declaring it" */
    for( i = 0;i < N;i ++ )
    {
        /* Can also be written as total+=Arr[i] */
        total = total + Arr[ i ];
    }
    /* Calculate the average = (Sum of N elements) / (Number of elements, N) */
    average = total / N;
    /* STDOUT the computer average to the user */
    printf("%llu\n", average);
    return 0;
}