This submission is migrated from previous version of oj.uz, which used different machine for grading. This submission may have different result if resubmitted.
#include <bits/stdc++.h>
using namespace std;
int n,m;
vector<pair<long long,pair<long long ,long long >>>v;
const long long M=50*2001;
long long d[2][M+10];
const long long inf=1e15;
void solve()
{
long long last=0;
for(long long i=0;i<M-1;i++)d[0][i]=-inf;
d[0][0]=0;
if (v[0].second.first>0)d[0][v[0].second.first]=v[0].second.second;
for(long long i=1;i<n;i++)
{
for(long long j=0;j<M-1;j++)
{
d[i%2][j]=max(d[(i+1)%2][j],-inf);
if (j+v[i].second.first>0&&d[(i+1)%2][j+v[i].second.first]>0)
d[i%2][j]=max(d[i%2][j],d[(i+1)%2][j+v[i].second.first]+v[i].second.second);
last=max(d[i%2][j],last);
}
}
cout<< max(last,(long long)0) ;
}
int main()
{
cin>>n;
long long x,y,z;
for(long long i=0;i<n;i++)
{
cin>>x>>y>>z;
v.push_back({y,{x,-z}});
}
cin>>m;
for(long long i=0;i<m;i++)
{
cin>>x>>y>>z;
v.push_back({y,{-x,+z}});
}
n+=m;
sort(v.begin(),v.end());
reverse(v.begin(),v.end());
solve();
}
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |