C - ハイスコア / AtCoderBeginnerContest#017

abc017.contest.atcoder.jp

#include <algorithm>
#include <iostream>
using namespace std;

#define MAX 100000

void Solve(int n, int m)    {
    int l, r, s, data[MAX+1]={0}, sum=0, answer=0;

    for (int i=0; i<n; ++i) {
        cin >> l >> r >> s;
        data[l-1]+=s;
        data[r]-=s;
        sum+=s;
    }
    for (int i=0; i<m+1; ++i)
        data[i+1]+=data[i];
    for (int i=0; i<m; ++i)
        answer=max(answer,sum-data[i]);
    cout << answer << endl;
}

int main(void)  {
    int n, m;

    cin >> n >> m;
    Solve(n,m);
    return 0;
}

全体の合計から覆っている区間の合計を引いた値の最大値を出力。
〜了〜