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>
#define DIM 100010
#define INF 2000000000000000000LL
using namespace std;
struct event{
int c,f,v,tip;
};
vector <event> events;
long long dp[DIM];
int n,m,c,f,v,i,sum;
inline int cmp (event a, event b){
if (a.f == b.f)
return a.tip < b.tip;
return a.f > b.f;
}
int main (){
//ifstream cin ("date.in");
//ofstream cout ("date.out");
cin>>n;
for (i=1;i<=n;i++){
cin>>c>>f>>v;
events.push_back({c,f,v,0});
sum += c;
}
cin>>m;
for (i=1;i<=m;i++){
cin>>c>>f>>v;
events.push_back({c,f,v,1});
}
for (i=1;i<=sum;i++)
dp[i] = -INF;
sort (events.begin(),events.end(),cmp);
for (auto it : events){
int c = it.c, cost = it.v;
if (it.tip){ /// proiect
for (i=c;i<=sum;i++){
if (dp[i] != -INF)
dp[i-c] = max (dp[i-c], dp[i] + cost);
}
} else { /// calculator
for (i=sum;i>=0;i--){
if (dp[i] != -INF)
dp[i+c] = max (dp[i+c], dp[i] - cost);
}}}
long long sol = 0;
for (i=0;i<=sum;i++)
sol = max (sol,dp[i]);
cout<<sol;
return 0;
}
# | 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... |