結果
問題 |
No.27 板の準備
|
ユーザー |
![]() |
提出日時 | 2015-05-10 00:06:53 |
言語 | C++11(廃止可能性あり) (gcc 13.3.0) |
結果 |
WA
|
実行時間 | - |
コード長 | 915 bytes |
コンパイル時間 | 526 ms |
コンパイル使用メモリ | 62,428 KB |
実行使用メモリ | 5,376 KB |
最終ジャッジ日時 | 2024-07-05 21:20:15 |
合計ジャッジ時間 | 1,317 ms |
ジャッジサーバーID (参考情報) |
judge2 / judge1 |
(要ログイン)
ファイルパターン | 結果 |
---|---|
other | AC * 17 WA * 1 |
ソースコード
#include <iostream> #include <algorithm> #include <sstream> using namespace std; int main(int argc, char *argv[]) { string s; getline(cin, s); stringstream ss(s); int v[4]; ss >> v[0] >> v[1] >> v[2] >> v[3]; sort(v, v + 4); int ans = 1 << 20; for (int i = 1; i < v[3]; ++i) { int ti[32]; for (int j = 0; j <= v[3]; ++j) { ti[j] = ((j % i) == 0) ? (j / i) : (1 << 20); } for (int j = i + 1; j < v[3]; ++j) { int tj[32]; for (int k = v[3]; k >= 0; --k) { tj[k] = ti[k]; for (int l = j; l <= k; l += j) { tj[k] = min(tj[k], ti[k - l] + l / j); } } for (int k = j + 1; k <= v[3]; ++k) { int tk[32]; for (int l = v[3]; l >= 0; --l) { tk[l] = tj[l]; for (int m = k; m <= l; m += k) { tk[l] = min(tk[l], tj[l - m] + m / k); } } ans = min(ans, tk[v[0]] + tk[v[1]] + tk[v[2]] + tk[v[3]]); } } } cout << ans << endl; return 0; }