C - ハイスコア / AtCoderBeginnerContest#017
#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; }
全体の合計から覆っている区間の合計を引いた値の最大値を出力。
〜了〜