代码如下
#include<cstdio>
#include<iostream>
#include<cstring>
#include<algorithm>
using namespace std;
struct Node
{
int s,e,sum;
}a[1005];
bool cmp(Node a,Node b)
{
if(a.s==b.s)
return a.e<b.e;
return a.s<b.s;
}
int main()
{
int n,m,r;
while(~scanf("%d%d%d",&n,&m,&r)){
for(int i=0;i<m;i++){
scanf("%d%d%d",&a[i].s,&a[i].e,&a[i].sum);
a[i].e+=r;
}
int ans=0,dp[1005];
sort(a,a+m,cmp);
for(int i=0;i<m;i++)
dp[i]=a[i].sum;
for(int i=0;i<m;i++){
for(int j=0;j<i;j++){
if(a[i].s>=a[j].e){
dp[i]=max(dp[i],dp[j]+a[i].sum);
}
}
ans=max(ans,dp[i]);
}
printf("%d\n",ans);
}
}