Я не могу понять логику решения этой проблемы Hackerrank, https://www.hackerrank.com/challenges/crush/problem
В разделе для обсуждения многие также опубликовали свои решения, но я не могу понять, почему эта логика работает.
Приведенное ниже решение взято из раздела обсуждения той же проблемы и имеет максимальное количество голосов,
#include <cmath>
#include <cstdio>
#include <vector>
#include <iostream>
#include <algorithm>
using namespace std;
int main() {
    long int N,K,p,q,sum,i,j,max=0,x=0;
    cin>>N>>K;
    long int *a=new long int[N+1]();
    for(i=0;i<K;i++)
    {
        cin>>p>>q>>sum;
        a[p]+=sum;
        if((q+1)<=N) a[q+1]-=sum;
    }
    for(i=1;i<=N;i++)
    {
       x=x+a[i];
       if(max<x) max=x;
    }
    cout<<max;
    return 0;
}
 Может ли кто-нибудь объяснить, почему стоит то же самое? Большое спасибо за вашу помощь.