結果

問題 No.2701 A cans -> B cans
ユーザー sibasyunsibasyun
提出日時 2024-04-25 11:07:16
言語 C++17
(gcc 12.3.0 + boost 1.83.0)
結果
WA  
実行時間 -
コード長 1,856 bytes
コンパイル時間 2,733 ms
コンパイル使用メモリ 205,572 KB
実行使用メモリ 5,376 KB
最終ジャッジ日時 2024-04-25 11:07:51
合計ジャッジ時間 30,732 ms
ジャッジサーバーID
(参考情報)
judge1 / judge2
このコードへのチャレンジ
(要ログイン)

テストケース

テストケース表示
入力 結果 実行時間
実行使用メモリ
testcase_00 AC 2 ms
5,248 KB
testcase_01 AC 2 ms
5,376 KB
testcase_02 AC 2 ms
5,376 KB
testcase_03 AC 2 ms
5,376 KB
testcase_04 AC 1 ms
5,376 KB
testcase_05 AC 2 ms
5,376 KB
testcase_06 AC 12 ms
5,376 KB
testcase_07 AC 12 ms
5,376 KB
testcase_08 AC 12 ms
5,376 KB
testcase_09 AC 11 ms
5,376 KB
testcase_10 AC 11 ms
5,376 KB
testcase_11 AC 12 ms
5,376 KB
testcase_12 AC 11 ms
5,376 KB
testcase_13 AC 12 ms
5,376 KB
testcase_14 AC 12 ms
5,376 KB
testcase_15 AC 12 ms
5,376 KB
testcase_16 AC 12 ms
5,376 KB
testcase_17 AC 12 ms
5,376 KB
testcase_18 AC 12 ms
5,376 KB
testcase_19 AC 12 ms
5,376 KB
testcase_20 AC 12 ms
5,376 KB
testcase_21 AC 12 ms
5,376 KB
testcase_22 AC 13 ms
5,376 KB
testcase_23 AC 12 ms
5,376 KB
testcase_24 AC 12 ms
5,376 KB
testcase_25 AC 12 ms
5,376 KB
testcase_26 AC 567 ms
5,376 KB
testcase_27 AC 591 ms
5,376 KB
testcase_28 AC 560 ms
5,376 KB
testcase_29 WA -
testcase_30 WA -
testcase_31 WA -
testcase_32 WA -
testcase_33 WA -
testcase_34 WA -
testcase_35 WA -
testcase_36 WA -
testcase_37 WA -
testcase_38 WA -
testcase_39 WA -
testcase_40 WA -
testcase_41 WA -
testcase_42 WA -
testcase_43 WA -
testcase_44 WA -
testcase_45 WA -
testcase_46 WA -
testcase_47 WA -
testcase_48 WA -
testcase_49 WA -
testcase_50 WA -
testcase_51 WA -
testcase_52 WA -
testcase_53 WA -
testcase_54 WA -
testcase_55 WA -
testcase_56 WA -
testcase_57 WA -
testcase_58 WA -
testcase_59 WA -
testcase_60 WA -
testcase_61 WA -
testcase_62 WA -
testcase_63 WA -
testcase_64 WA -
testcase_65 WA -
testcase_66 WA -
testcase_67 WA -
testcase_68 WA -
testcase_69 WA -
testcase_70 WA -
testcase_71 WA -
testcase_72 WA -
testcase_73 WA -
testcase_74 WA -
testcase_75 WA -
testcase_76 WA -
testcase_77 WA -
testcase_78 WA -
権限があれば一括ダウンロードができます

ソースコード

diff #

// A cans -> B cans
#include <bits/stdc++.h>
// #include <atcoder/all>
#include <iostream>
#include <math.h>

using namespace std;
// using namespace atcoder;
// using mint = modint998244353;
// using mint = modint1000000007;
using vi = vector<int>;
using vvi = vector<vector<int>>;
using ll = long long;
template <class T> using max_heap = priority_queue<T>;
template <class T> using min_heap = priority_queue<T, vector<T>, greater<>>;
#define rep(i, n) for (int i = 0; i < (int)(n); i++)
#define rep2(i, f, n) for (int i = (int) f; i < (int)(n); i++)
#define repd(i, n, l) for (int i = (int) n; i >= (int) l; i--)

const ll inf = ll(1e9+7);

int main() {
    int n, m;
    cin >> n >> m;
    vector<vector<ll>> C;
    rep(i, n){
        ll a, b, c;
        cin >> a >> b >> c;
        C.push_back({a, b, c});
    }
    sort(C.begin(), C.end(), [](vector<ll> &left, vector<ll> &right){
        ll a1 = left[1] * left[2];
        ll b1 = left[0] - left[1];
        ll a2 = right[1] * right[2];
        ll b2 = right[0] - right[1];
        if (a1 * b2 > a2 * b1) return true;
        else if (a1 * b2 == a2 * b1 && left[0] < right[0]) return true;
        else return false; 
    });
    vector<ll> ans(m+1, 0);
    for (int p = 1; p <= m; p++){
        ans[p] = max(ans[p], ans[p-1]);
        ll now = p;
        for (auto c : C){
            if (c[0] > now) continue;
            ll temp = 0;
            ll now_i = 0;

            now -= c[0];
            now_i += c[1];
            temp += c[1]*c[2];
            ans[p] = max(ans[p], temp + ans[now]);
            
            while (now + now_i >= c[0]){
                now -= (c[0] - c[1]);
                temp += c[1] * c[2];
                ans[p] = max(ans[p], temp + ans[now]);
            }
        }
    }
    for (int i = 1; i <= m; i++){
        cout << ans[i] << endl;
    }
    return 0;
}
0