Submission #62077703


Source Code Expand

Copy
/*
~~ Alguma parte/frase foda de um livro/mangá para dar sorte ~~
Uma vez eu gritei, gradualmente, perdi minha voz.
Uma vez eu chorei, gradualmente, perdi minhas lágrimas.
Uma vez eu sofri, gradualmente, me tornei capaz de suportar tudo.
Uma vez me alegrei, gradualmente, me tornei indiferente ao mundo.
E agora, tudo o que me resta é um rosto sem expressão,
meu olhar é tão firme quanto um monólito,
apenas a perseverança permanece no meu coração.
Este sou eu, um personagem insignificante,
Fang Yuan —·A·Perseverança.
*/
#if defined(LOCAL) or not defined(LUOGU)
#pragma GCC optimize(3)
#pragma GCC optimize("Ofast,unroll-loops")
#endif
#include <bits/stdc++.h>
 
הההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההה
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
/*
~~ Alguma parte/frase foda de um livro/mangá para dar sorte ~~

Uma vez eu gritei, gradualmente, perdi minha voz.
Uma vez eu chorei, gradualmente, perdi minhas lágrimas.
Uma vez eu sofri, gradualmente, me tornei capaz de suportar tudo.
Uma vez me alegrei, gradualmente, me tornei indiferente ao mundo.
E agora, tudo o que me resta é um rosto sem expressão,
meu olhar é tão firme quanto um monólito,
apenas a perseverança permanece no meu coração.
Este sou eu, um personagem insignificante,
Fang Yuan — A Perseverança.

*/
#if defined(LOCAL) or not defined(LUOGU)
#pragma GCC optimize(3)
#pragma GCC optimize("Ofast,unroll-loops")
#endif

#include <bits/stdc++.h>

using namespace std;

#define int long long
#define IOS                           \
    ios_base::sync_with_stdio(false); \
    cin.tie(0)
#define pb push_back
#define all(v) v.begin(), v.end()
#define f first
#define s second
#define Unique(v)                     \
    sort(all(v));                     \
    v.erase(unique(all(v)), v.end()); \
    v.shrink_to_fit()
#define sz(v) ((int)v.size())
#define sor(x) sort(all(x))
#define ft front()
#define bk back()
#define endl "\n"
#define rep(i, a, b) for (int i = a; i < (b); ++i)
#define MIN(v) *min_element(all(v))
#define MAX(v) *max_element(all(v))
#define LB(c, x) distance((c).begin(), lower_bound(all(c), (x)))
#define UB(c, x) distance((c).begin(), upper_bound(all(c), (x)))
typedef vector<double> vd;
typedef vector<vd> vvd;
typedef vector<vvd> vvvd;
typedef vector<int> vi;
typedef vector<vi> vvi;
typedef vector<vvi> vvvi;
typedef long long ll;
typedef double db;
typedef long double ld;
typedef pair<int, int> pii;
typedef pair<int, pii> piii;
typedef vector<pii> vii;
typedef vector<piii> viii;
typedef tuple<int, int, int> tiii;
const int MAXN = 2e5 + 5;
const int INF = 0x3f3f3f3f;
const ll LINF = 0x3f3f3f3f3f3f3f3fll;
const int mod = 1e9 + 7;
void dbg_out() { cerr << endl; }
template <typename Head, typename... Tail>
void dbg_out(Head H, Tail... T)
{
    cerr << ' ' << H;
    dbg_out(T...);
}
#define dbg(...) cerr << "(" << _VA_ARGS_ << "):", dbg_out(_VA_ARGS_), cerr << endl

void solve()
{
    int n, x;
    cin >> n >> x;
    vector<int> v(n), a(n), c(n);

    rep(i, 0, n) cin >> v[i] >> a[i] >> c[i];

    vii t1, t2, t3;
    rep(i, 0, n)
    {
        if (v[i] == 1)
            t1.pb({c[i], a[i]});
        if (v[i] == 2)
            t2.pb({c[i], a[i]});
        if (v[i] == 3)
            t3.pb({c[i], a[i]});
    }
    auto cmp = [&](vii &v)
    {
        vi dp(x + 1, 0);
        dp[0] = 0;
        for (auto &[c, a] : v)
        {
            for (int j = x; j >= c; j--)
            {
                dp[j] = max(dp[j], dp[j - c] + a);
            }
        }
        return dp;
    };

    vi dp1 = cmp(t1), dp2 = cmp(t2), dp3 = cmp(t3);
    auto min_cust = [&](const vi &dp, int req)
    {
        long long ans = LINF;
        rep (c, 0, x+1)
        {
            if (dp[c] >= req)
                ans = min(ans, (ll)c);
        }
        return ans;
    };

    int lo = 0LL, hi = min({dp1[x], dp2[x], dp3[x]}), ans = 0LL;
    while (lo <= hi)
    {
        int mid = (lo + hi) / 2;
        int c1 = sz(t1) ? min_cust(dp1, mid) : (mid == 0LL ? 0LL : INF);
        int c2 = sz(t2) ? min_cust(dp2, mid) : (mid == 0LL ? 0LL : INF);
        int c3 = sz(t3) ? min_cust(dp3, mid) : (mid == 0LL ? 0LL : INF);

        if (c1 != INF && c2 != INF && c3 != INF && (c1 + c2 + c3) <= x)
        {
            ans = mid;
            lo = mid + 1;
        }
        else
        {
            hi = mid - 1;
        }
    }
    cout << ans << endl;
}

int32_t main()
{
    IOS;
    int tt;
    tt = 1;
    while (tt--)
        solve();
    return 0;
}

Submission Info

Submission Time
Task E - Vitamin Balance
User Marcux777
Language C++ 23 (gcc 12.2)
Score 450
Code Size 3853 Byte
Status AC
Exec Time 9 ms
Memory 3776 KB

Judge Result

Set Name Sample All
Score / Max Score 0 / 0 450 / 450
Status
AC × 2
AC × 58
Set Name Test Cases
Sample example_00.txt, example_01.txt
All example_00.txt, example_01.txt, hand_00.txt, hand_01.txt, hand_02.txt, hand_03.txt, hand_04.txt, hand_05.txt, hand_06.txt, hand_07.txt, hand_08.txt, hand_09.txt, hand_10.txt, random_00.txt, random_01.txt, random_02.txt, random_03.txt, random_04.txt, random_05.txt, random_06.txt, random_07.txt, random_08.txt, random_09.txt, random_10.txt, random_11.txt, random_12.txt, random_13.txt, random_14.txt, random_15.txt, random_16.txt, random_17.txt, random_18.txt, random_19.txt, random_20.txt, random_21.txt, random_22.txt, random_23.txt, random_24.txt, random_25.txt, random_26.txt, random_27.txt, random_28.txt, random_29.txt, random_30.txt, random_31.txt, random_32.txt, random_33.txt, random_34.txt, random_35.txt, random_36.txt, random_37.txt, random_38.txt, random_39.txt, random_40.txt, random_41.txt, random_42.txt, random_43.txt, random_44.txt
Case Name Status Exec Time Memory
example_00.txt AC 1 ms 3452 KB
example_01.txt AC 1 ms 3636 KB
hand_00.txt AC 1 ms 3396 KB
hand_01.txt AC 6 ms 3768 KB
hand_02.txt AC 1 ms 3564 KB
hand_03.txt AC 6 ms 3728 KB
hand_04.txt AC 1 ms 3556 KB
hand_05.txt AC 1 ms 3428 KB
hand_06.txt AC 9 ms 3712 KB
hand_07.txt AC 2 ms 3776 KB
hand_08.txt AC 1 ms 3504 KB
hand_09.txt AC 1 ms 3400 KB
hand_10.txt AC 9 ms 3568 KB
random_00.txt AC 2 ms 3636 KB
random_01.txt AC 2 ms 3648 KB
random_02.txt AC 1 ms 3648 KB
random_03.txt AC 1 ms 3568 KB
random_04.txt AC 2 ms 3500 KB
random_05.txt AC 1 ms 3548 KB
random_06.txt AC 2 ms 3448 KB
random_07.txt AC 2 ms 3600 KB
random_08.txt AC 1 ms 3500 KB
random_09.txt AC 2 ms 3512 KB
random_10.txt AC 2 ms 3576 KB
random_11.txt AC 2 ms 3632 KB
random_12.txt AC 4 ms 3604 KB
random_13.txt AC 4 ms 3620 KB
random_14.txt AC 4 ms 3644 KB
random_15.txt AC 2 ms 3728 KB
random_16.txt AC 1 ms 3592 KB
random_17.txt AC 1 ms 3588 KB
random_18.txt AC 1 ms 3628 KB
random_19.txt AC 1 ms 3528 KB
random_20.txt AC 2 ms 3592 KB
random_21.txt AC 2 ms 3596 KB
random_22.txt AC 2 ms 3504 KB
random_23.txt AC 2 ms 3564 KB
random_24.txt AC 2 ms 3644 KB
random_25.txt AC 2 ms 3548 KB
random_26.txt AC 3 ms 3572 KB
random_27.txt AC 5 ms 3720 KB
random_28.txt AC 6 ms 3644 KB
random_29.txt AC 3 ms 3548 KB
random_30.txt AC 1 ms 3724 KB
random_31.txt AC 1 ms 3540 KB
random_32.txt AC 2 ms 3592 KB
random_33.txt AC 1 ms 3592 KB
random_34.txt AC 1 ms 3360 KB
random_35.txt AC 1 ms 3520 KB
random_36.txt AC 1 ms 3500 KB
random_37.txt AC 2 ms 3580 KB
random_38.txt AC 2 ms 3592 KB
random_39.txt AC 1 ms 3512 KB
random_40.txt AC 2 ms 3664 KB
random_41.txt AC 2 ms 3468 KB
random_42.txt AC 6 ms 3612 KB
random_43.txt AC 8 ms 3692 KB
random_44.txt AC 2 ms 3660 KB


2025-03-06 (Thu)
07:39:23 +00:00