1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43
| #include <cstdio> #include <algorithm> #include <iostream> #include <vector>
using namespace std;
struct P { int start, end, e; };
bool cmp(const P &a, const P &b) { return a.start < b.start; }
int N, M, R; struct P a[1002]; int dp[1002];
int main() { scanf("%d %d %d", &N, &M, &R); int i, j; for(i=0;i<M;i++) { struct P p; scanf("%d %d %d", &p.start, &p.end, &p.e); p.end += R; a[i] = p; }
sort(a, a+M, cmp); for(i=0;i<M;++i) { dp[i] = a[i].e; for(j=0;j<i;++j) { if (a[j].end <= a[i].start) dp[i] = max(dp[i], dp[j]+a[i].e); } }
cout << *max_element(dp, dp+M) << endl; return 0; }
|