Submission #824334

# Submission time Handle Problem Language Result Execution time Memory
824334 2023-08-14T02:56:03 Z hungnt Cloud Computing (CEOI18_clo) C++14
100 / 100
650 ms 3588 KB
#include<bits/stdc++.h>
using namespace std;

class state
{
public:
    int c, f, v;
    bool type;
    state()
    {
        c = f = v = 0;
        type = 0;
    }
    state(int _c, int _f, int _v, bool _type)
    {
        c = _c;
        f = _f;
        v = _v;
        type = _type;
    }
    bool operator < (const state &v) const
    {
        if(f == v.f) return type < v.type;
        return f < v.f;
    }
    bool operator == (const state &v) const
    {
        return f == v.f;
    }
    bool operator > (const state &v) const
    {
        if(f == v.f) return type > v.type;
        return f > v.f;
    }
};

int n, m;
state a[4005];
long long dp[2][4005 * 50];

int main()
{
    ios_base::sync_with_stdio(0);
    cin.tie(0); cout.tie(0);
    cin >> n;
    int ci, fi, vi;
    for(int i = 1; i <= n; i++)
    {
        cin >> ci >> fi >> vi;
        a[i] = {ci, fi, vi, 1};
    }
    cin >> fi;
    ci = n;
    n += fi;
    for(int i = ci + 1; i <= n; i++)
    {
        cin >> ci >> fi >> vi;
        a[i] = {ci, fi, vi, 0};
    }
    sort(a + 1, a + n + 1);
    for(int i = 1; i <= n; i++)
    {
//        cout << a[i].c << " " << a[i].f << " " << a[i].v << " " << a[i].type << "\n";
    }
    memset(dp, -0x3f, sizeof dp);
    int id = 0;
    dp[0][0] = 0;
    int lim = 0, newc, add;
    for(int i = n; i >= 1; i--)
    {
        id ^= 1;
//        cout << lim << "\n";
        for(int j = 0; j <= lim; j++)
            dp[id][j] = dp[id ^ 1][j];
         for(int j = (!a[i].type ? a[i].c : 0); j <= lim; j++)
        {
            if(!a[i].type)
            {
                newc = j - a[i].c;
                add = a[i].v;
            }
            else
            {
                newc = j + a[i].c;
                add = -a[i].v;
            }
            dp[id][newc] = max(dp[id][newc], dp[id ^ 1][j] + add);
//            cout << n - i << " " << newc << " " << dp[id][newc] << "\n";

        }
        if(a[i].type) lim += a[i].c;
    }
    long long ans = 0;
    for(int i = 0; i <= lim; i++) ans = max(ans, dp[id][i]);
    cout << ans;
}


# Verdict Execution time Memory Grader output
1 Correct 2 ms 3412 KB Output is correct
2 Correct 2 ms 3412 KB Output is correct
3 Correct 2 ms 3412 KB Output is correct
4 Correct 2 ms 3460 KB Output is correct
5 Correct 3 ms 3540 KB Output is correct
6 Correct 2 ms 3500 KB Output is correct
7 Correct 3 ms 3540 KB Output is correct
8 Correct 4 ms 3540 KB Output is correct
# Verdict Execution time Memory Grader output
1 Correct 2 ms 3460 KB Output is correct
2 Correct 1 ms 3412 KB Output is correct
3 Correct 1 ms 3468 KB Output is correct
4 Correct 2 ms 3412 KB Output is correct
5 Correct 21 ms 3412 KB Output is correct
6 Correct 3 ms 3540 KB Output is correct
7 Correct 117 ms 3548 KB Output is correct
8 Correct 20 ms 3564 KB Output is correct
9 Correct 182 ms 3412 KB Output is correct
# Verdict Execution time Memory Grader output
1 Correct 2 ms 3412 KB Output is correct
2 Correct 1 ms 3412 KB Output is correct
3 Correct 1 ms 3412 KB Output is correct
4 Correct 1 ms 3464 KB Output is correct
5 Correct 2 ms 3412 KB Output is correct
6 Correct 2 ms 3412 KB Output is correct
7 Correct 2 ms 3456 KB Output is correct
8 Correct 2 ms 3472 KB Output is correct
# Verdict Execution time Memory Grader output
1 Correct 2 ms 3464 KB Output is correct
2 Correct 2 ms 3412 KB Output is correct
3 Correct 8 ms 3412 KB Output is correct
4 Correct 3 ms 3412 KB Output is correct
5 Correct 287 ms 3560 KB Output is correct
6 Correct 499 ms 3548 KB Output is correct
7 Correct 545 ms 3548 KB Output is correct
8 Correct 514 ms 3548 KB Output is correct
# Verdict Execution time Memory Grader output
1 Correct 1 ms 3412 KB Output is correct
2 Correct 1 ms 3460 KB Output is correct
3 Correct 21 ms 3520 KB Output is correct
4 Correct 9 ms 3540 KB Output is correct
5 Correct 365 ms 3556 KB Output is correct
6 Correct 515 ms 3540 KB Output is correct
# Verdict Execution time Memory Grader output
1 Correct 2 ms 3412 KB Output is correct
2 Correct 2 ms 3412 KB Output is correct
3 Correct 2 ms 3412 KB Output is correct
4 Correct 2 ms 3460 KB Output is correct
5 Correct 3 ms 3540 KB Output is correct
6 Correct 2 ms 3500 KB Output is correct
7 Correct 3 ms 3540 KB Output is correct
8 Correct 4 ms 3540 KB Output is correct
9 Correct 2 ms 3460 KB Output is correct
10 Correct 1 ms 3412 KB Output is correct
11 Correct 1 ms 3468 KB Output is correct
12 Correct 2 ms 3412 KB Output is correct
13 Correct 21 ms 3412 KB Output is correct
14 Correct 3 ms 3540 KB Output is correct
15 Correct 117 ms 3548 KB Output is correct
16 Correct 20 ms 3564 KB Output is correct
17 Correct 182 ms 3412 KB Output is correct
18 Correct 2 ms 3412 KB Output is correct
19 Correct 1 ms 3412 KB Output is correct
20 Correct 1 ms 3412 KB Output is correct
21 Correct 1 ms 3464 KB Output is correct
22 Correct 2 ms 3412 KB Output is correct
23 Correct 2 ms 3412 KB Output is correct
24 Correct 2 ms 3456 KB Output is correct
25 Correct 2 ms 3472 KB Output is correct
26 Correct 2 ms 3464 KB Output is correct
27 Correct 2 ms 3412 KB Output is correct
28 Correct 8 ms 3412 KB Output is correct
29 Correct 3 ms 3412 KB Output is correct
30 Correct 287 ms 3560 KB Output is correct
31 Correct 499 ms 3548 KB Output is correct
32 Correct 545 ms 3548 KB Output is correct
33 Correct 514 ms 3548 KB Output is correct
34 Correct 1 ms 3412 KB Output is correct
35 Correct 1 ms 3460 KB Output is correct
36 Correct 21 ms 3520 KB Output is correct
37 Correct 9 ms 3540 KB Output is correct
38 Correct 365 ms 3556 KB Output is correct
39 Correct 515 ms 3540 KB Output is correct
40 Correct 22 ms 3412 KB Output is correct
41 Correct 64 ms 3540 KB Output is correct
42 Correct 6 ms 3472 KB Output is correct
43 Correct 650 ms 3548 KB Output is correct
44 Correct 571 ms 3560 KB Output is correct
45 Correct 364 ms 3588 KB Output is correct
46 Correct 4 ms 3540 KB Output is correct
47 Correct 6 ms 3552 KB Output is correct
48 Correct 6 ms 3476 KB Output is correct