Here is the link of question:
Here is my solution:
#include <bits/stdc++.h>
using namespace std;
struct plane
{
int st,dur,rate;
};
int dp[1000001];
bool cmp(plane p1,plane p2)
{
return p1.dur<p2.dur;
}
int findnext(plane arr[],int n)
{
for(int j = n-1;j>=0;j--)
{
if(arr[j].dur<=arr[n-1].st)
{
return j;
}
}
return -1;
}
int solution(plane arr[],int n)
{
// if(n == 1)
// {
// return arr[n-1].rate;
// }
// int include = arr[n-1].rate;
// dp[]
// int i = findnext(arr,n);
// if(i!=-1)
// {
// include = include+solution(arr,i+1);
// }
// int exclude = solution(arr,n-1);
// return max(include,exclude);
dp[0] = arr[0].rate;
for(int i=1;i<n;i++)
{
int include = arr[i].rate;
int k = findnext(arr,i);
if(k != -1)
{
include = include+dp[k];
}
int exclude = dp[i-1];
dp[i] = max(include,exclude);
}
return dp[n-1];
}
int main() {
// your code goes here
int t;
cin>>t;
while(t--)
{
memset(dp,0,sizeof(dp));
int n;
cin>>n;
struct plane arr[n];
for(int i=0;i<n;i++)
{
int s,e,p;
cin>>s>>e>>p;
arr[i].st = s;
arr[i].dur = s+e;
arr[i].rate = p;
}
sort(arr,arr+n,cmp);
int ans = solution(arr,n);
cout<<ans<<endl;
}
return 0;
}
it is giving WA , can someone please help.