제출 #1279840

#제출 시각아이디문제언어결과실행 시간메모리
1279840hanguyendanghuyCloud Computing (CEOI18_clo)C++20
100 / 100
173 ms2136 KiB
#include <bits/stdc++.h>
using namespace std;
#define yes cout<<"YES"<<'\n'
#define no cout<<"NO"<<'\n'
#define si size()
#define fi first
#define se second
#define ll long long
#define sr sort
#define pb push_back
const ll MAXN=2e5+5,MOD=1e9+7;
ll n,m,j,k,p,i,f,dem,ans,t,l,r=1,dp[MAXN],prefix[MAXN];
struct huy{
    ll cnt,fast,cost,id;
};
bool cmp(huy x,huy y){
    return (x.fast>y.fast||(x.fast==y.fast&&x.cost<y.cost));
}
huy a[MAXN];
int main(){ 
    ios::sync_with_stdio(false);    
    cin.tie(nullptr);cout.tie(0);
//    freopen("test.INP","r",stdin);
//    freopen("test.OUT","w",stdout);
    cin>>n;
    for(i=1;i<=n;i++){
        cin>>a[i].cnt>>a[i].fast>>a[i].cost;
        a[i].cost*=-1;
        a[i].id=i;
    }
    cin>>m;
    for(i=n+1;i<=n+m;i++){
        cin>>a[i].cnt>>a[i].fast>>a[i].cost;
        a[i].id=i;
    }
    for(i=1;i<=MAXN-5;i++)
        dp[i]=-1e18;
    sort(a+1,a+n+m+1,cmp);
    ll dem=0;
    for(i=1;i<=n+m;i++){
        if(a[i].id<=n){
            for(j=dem;j>=0;j--){
                dp[j+a[i].cnt]=max(dp[j+a[i].cnt],dp[j]+a[i].cost);
            }
            dem+=a[i].cnt;
        }
        else{
            for(j=a[i].cnt;j<=dem;j++)
                dp[j-a[i].cnt]=max(dp[j-a[i].cnt],dp[j]+a[i].cost);
        }
    }
    cout<<*max_element(dp,dp+MAXN-5+1);
}
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...