Submission #481890

#TimeUsernameProblemLanguageResultExecution timeMemory
481890keertanCloud Computing (CEOI18_clo)C++17
100 / 100
597 ms2892 KiB
/**
 * If you live in imaginary world when your imaginary situation encounter in 
 * real situation you can't enjoiy it because you have to do pending work.
 * {This pending work appeared because you wasted that time for your useless
 * imagianry thinking.}
 */
#include<bits/stdc++.h>
using namespace std;
#define int  int64_t
#define all(x) x.begin(),x.end()
#define all1(x) x.rbegin(),x.rend()
const int N=2e6+5;

int vis=0;
typedef struct A{
    int core;
    int rate;
    int price;
}node;
void solve(){
    int n;
    cin>>n;
    vector<node> z;
    node x;
    int mx=0;
    for (int i=0;i<n;i++){
        cin>>x.core>>x.rate>>x.price;
        x.price*=-1;
        z.push_back(x);
        mx+=x.core;
    }
    cin>>n;
    for (int i=0;i<n;i++){
        cin>>x.core>>x.rate>>x.price;
        x.core*=-1;
        z.push_back(x);
    }
    sort(all(z),[&](node a,node b){
        if (a.rate==b.rate){return a.price<b.price;}
        return a.rate>b.rate;
    });   
    n=z.size();
    vector<vector<int>> dp(2,vector<int>(mx+1,INT64_MIN));
    dp[0][0]=dp[1][0]=0;
    for (int i=0;i<n;i++){
        int cur=i&1,prv=~i&1;
        for (int j=0;j<=mx;j++){
            int con=j-z[i].core;
            dp[cur][j]=dp[prv][j];
            if (0<=con && con<=mx && dp[prv][con]!=INT64_MIN){
            dp[cur][j]=max(dp[prv][j],z[i].price+dp[prv][con]);}
        }
    }
    int ans=0;
    for (int i=0;i<=mx;i++){ans=max(ans,dp[(n-1)&1][i]);}
    cout<<ans;
}
int32_t main(){
    ios::sync_with_stdio(false);cin.tie(nullptr);cout.tie(nullptr);
    int tq=1;
    //cin>>tq;
    for (;tq;tq--){solve();}
}
//is a bruteforce possible?
//think greedier, make more assumptions
// if we you find solution using loop to decrease complexity use bs
//stuck for more than 5 minutes? move on 
#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...