이 제출은 이전 버전의 oj.uz에서 채점하였습니다. 현재는 제출 당시와는 다른 서버에서 채점을 하기 때문에, 다시 제출하면 결과가 달라질 수도 있습니다.
#include<bits/stdc++.h>
using namespace std;
struct noe{
long long ci,fi,vi;
};
const int maxa=100000+5,maxn=2000;
long long n,m,dp[2][maxa],inf=1e15;
vector<noe>alln,allm;
bool cmp(pair<int,pair<int,int>> a,pair<int,pair<int,int>> b){
if(a.first==b.first){
return a.second.first<b.second.first;
}
return a.first<b.first;
}
int main(){
ios::sync_with_stdio(0);
cin.tie(0);
cout.tie(0);
cin>>n;
alln.resize(n+1);
for(int i=0;i<2;i++){
for(int j=0;j<maxa;j++){
dp[i][j]=-inf;
}
}
for(int i=0;i<n;i++){
cin>>alln[i].ci>>alln[i].fi>>alln[i].vi;
}
cin>>m;
allm.resize(m+1);
for(int i=0;i<m;i++){
cin>>allm[i].ci>>allm[i].fi>>allm[i].vi;
}
vector<pair<int,pair<int,int>>>fake;
for(int i=0;i<n;i++){
fake.push_back(make_pair(alln[i].fi,make_pair(2,i)));
}
for(int i=0;i<m;i++){
fake.push_back(make_pair(allm[i].fi,make_pair(1,i)));
}
dp[1][0]=0;
sort(fake.begin(),fake.end(),cmp);
for(int i=(int)fake.size()-1;i>=0;i--){
swap(dp[1],dp[0]);
// cout<<fake[i].first<<"\n";
for(int j=0;j<maxa;j++){
dp[1][j]=-inf;
}
if(fake[i].second.first==1){
int ind=fake[i].second.second;
for(int j=0;j<maxa;j++){
if(j<allm[ind].ci){
dp[1][j]=max(dp[1][j],dp[0][j]);
continue;
}
dp[1][j]=max(dp[1][j],dp[0][j]);
dp[1][j-allm[ind].ci]=max(dp[1][j-allm[ind].ci],dp[0][j]+allm[ind].vi);
}
}
else{
int ind=fake[i].second.second;
for(int j=0;j<maxa;j++){
if(j+alln[ind].ci>=maxa){
dp[1][j]=max(dp[1][j],dp[0][j]);
continue;
}
dp[1][j]=max(dp[1][j],dp[0][j]);
dp[1][j+alln[ind].ci]=max(dp[1][j+alln[ind].ci],dp[0][j]-alln[ind].vi);
}
}
}
long long res=0;
for(int i=0;i<maxa;i++){
res=max(res,dp[1][i]);
}
cout<<res<<"\n";
}
# | 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... |