結果

問題 No.3320 yiwiwiy
コンテスト
ユーザー みうね
提出日時 2025-10-06 09:57:50
言語 C++23
(gcc 13.3.0 + boost 1.87.0)
結果
WA  
実行時間 -
コード長 1,501 bytes
コンパイル時間 3,127 ms
コンパイル使用メモリ 279,676 KB
実行使用メモリ 7,720 KB
最終ジャッジ日時 2025-10-31 18:53:23
合計ジャッジ時間 8,846 ms
ジャッジサーバーID
(参考情報)
judge2 / judge3
このコードへのチャレンジ
(要ログイン)
ファイルパターン 結果
sample WA * 1
other WA * 30 TLE * 1 -- * 42
権限があれば一括ダウンロードができます

ソースコード

diff #

#include <bits/stdc++.h>
using namespace std;
using ll = long long;

// yiwiy と iwiwi の両方を考慮して魅力度を最大化する

int main() {
    ios::sync_with_stdio(false);
    cin.tie(nullptr);

    ll Y, I, W, P, Q;
    cin >> Y >> I >> W >> P >> Q;

    // yiwiy の個数は min(Y/2, I/2, W)
    // iwiwi の個数は min(I/3, W/2)
    // 残り文字の使い方を考慮して魅力度を最大化する

    ll best_value = -1;
    string best_str = "";

    // yiwiy を a 回、iwiwi を b 回作ると仮定して探索
    for (ll a = 0; a <= min({Y / 2, I / 2, W}); a++) {
        for (ll b = 0; b <= min({I / 3, W / 2}); b++) {
            if (2 * a + 0 > Y) continue;
            if (2 * a + 3 * b > I) continue;
            if (a + 2 * b > W) continue;

            ll remY = Y - 2 * a;
            ll remI = I - 2 * a - 3 * b;
            ll remW = W - a - 2 * b;

            ll score = a * P + b * Q;
            if (score > best_value) {
                best_value = score;

                string s = "";
                // yiwiy を a 回追加
                for (int i = 0; i < a; i++) s += "yiwiy";
                // iwiwi を b 回追加
                for (int i = 0; i < b; i++) s += "iwiwi";
                // 残りを全部適当に追加
                s += string(remY, 'y');
                s += string(remI, 'i');
                s += string(remW, 'w');

                best_str = s;
            }
        }
    }

    cout << best_str << "\n";
}
0