Submission #163785

#TimeUsernameProblemLanguageResultExecution timeMemory
163785Alexa2001Cloud Computing (CEOI18_clo)C++17
100 / 100
441 ms2168 KiB
#include <bits/stdc++.h>

using namespace std;

const int Nmax = 2004;
typedef long long ll;
const ll inf = 1e18;

struct ev
{
    int c, v, f, tip;
} a[2 * Nmax];

int n, m;

void solve()
{
    vector<ll> dp(50 * (n - m) + 1), old(50 * (n - m) + 1, -inf);
    int i, j;
    
    old[0] = 0;

    for(i=1; i<=n; ++i)
    {
        if(a[i].tip == 0)
        {
            for(j=0; j<a[i].c; ++j) dp[j] = old[j];

            for(j=a[i].c; j<dp.size(); ++j)
                dp[j] = max(old[j], old[j-a[i].c] - a[i].v);
        }
        else 
        {
            for(j=0; j + a[i].c < dp.size(); ++j)
                dp[j] = max(old[j], old[j+a[i].c] + a[i].v);
            
            for(; j < dp.size(); ++j)
                dp[j] = old[j];
        }
        swap(dp, old);
    }

    cout << ( *max_element(old.begin(), old.end()) ) << '\n';
}

int main()
{
 //   freopen("input", "r", stdin);
    cin.tie(0); cin.sync_with_stdio(false);

    int i, C, F, V;

    cin >> n;
    for(i=1; i<=n; ++i)
    {
        cin >> C >> F >> V;
        a[i] = {C, V, F, 0};
    }
    
    cin >> m;
    for(i=1; i<=m; ++i)
    {
        cin >> C >> F >> V;
        a[i+n] = {C, V, F, 1}; 
    }

    n += m;
    sort(a+1, a+n+1, [] (ev x, ev y) 
                     {
                         if(x.f != y.f) return x.f > y.f;
                         return x.tip < y.tip;
                     }
        );
    
    solve();

    return 0;
}

Compilation message (stderr)

clo.cpp: In function 'void solve()':
clo.cpp:29:28: warning: comparison between signed and unsigned integer expressions [-Wsign-compare]
             for(j=a[i].c; j<dp.size(); ++j)
                           ~^~~~~~~~~~
clo.cpp:34:33: warning: comparison between signed and unsigned integer expressions [-Wsign-compare]
             for(j=0; j + a[i].c < dp.size(); ++j)
                      ~~~~~~~~~~~^~~~~~~~~~~
clo.cpp:37:21: warning: comparison between signed and unsigned integer expressions [-Wsign-compare]
             for(; j < dp.size(); ++j)
                   ~~^~~~~~~~~~~
#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...