結果
| 問題 |
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 |
ソースコード
#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";
}