結果
問題 | No.110 しましまピラミッド |
ユーザー |
![]() |
提出日時 | 2014-12-24 01:35:19 |
言語 | C++11(廃止可能性あり) (gcc 13.3.0) |
結果 |
AC
|
実行時間 | 2 ms / 5,000 ms |
コード長 | 785 bytes |
コンパイル時間 | 778 ms |
コンパイル使用メモリ | 65,696 KB |
実行使用メモリ | 6,820 KB |
最終ジャッジ日時 | 2024-12-31 11:05:10 |
合計ジャッジ時間 | 1,790 ms |
ジャッジサーバーID (参考情報) |
judge3 / judge5 |
(要ログイン)
ファイルパターン | 結果 |
---|---|
sample | AC * 4 |
other | AC * 26 |
ソースコード
#include <iostream> #include <vector> #include <algorithm> using namespace std; bool choose_block(int &top, vector<int> &b) { while (!b.empty() && b.back() >= top) { b.pop_back(); } if (b.empty()) { return false; } top = b.back(); b.pop_back(); return true; } int simulate(vector<int> b1, vector<int> b2) { int ans = 0; int top = 1 << 30; for (;;) { if (!choose_block(top, b1)) { break; } ++ans; if (!choose_block(top, b2)) { break; } ++ans; } return ans; } int main() { int Nw; cin >> Nw; vector<int> W(Nw); for (auto &x : W) { cin >> x; } int Nb; cin >> Nb; vector<int> B(Nb); for (auto &x : B) { cin >> x; } sort(begin(W), end(W)); sort(begin(B), end(B)); int ans = max(simulate(W, B), simulate(B, W)); cout << ans << endl; }