結果
問題 | No.2247 01 ZigZag |
ユーザー |
![]() |
提出日時 | 2023-03-17 21:40:30 |
言語 | C++17 (gcc 13.3.0 + boost 1.87.0) |
結果 |
WA
|
実行時間 | - |
コード長 | 1,044 bytes |
コンパイル時間 | 1,856 ms |
コンパイル使用メモリ | 196,508 KB |
最終ジャッジ日時 | 2025-02-11 12:44:43 |
ジャッジサーバーID (参考情報) |
judge5 / judge2 |
(要ログイン)
ファイルパターン | 結果 |
---|---|
sample | AC * 2 |
other | AC * 42 WA * 8 |
ソースコード
#include<bits/stdc++.h> using namespace std; using int64 = long long; int main() { int N, M, K; cin >> N >> M >> K; auto make = [](int N, int M, int K, bool f) -> string { string Z=f?"0":"1"; if(f)--N;else --M; while (K > 0) { if (Z.size() & 1) { --M; Z += "1"; } else { --N; Z += "0"; } if (N < 0 or M < 0) { return "inf"; } --K; } string ushi; for(auto& c : Z) { if (c == '0') { while (N > 0) { ushi += "0"; --N; } } ushi += c; } string uku; for(int i = (int) ushi.size() - 1; i >= 0; i--) { if (ushi[i] == '1') { while (M > 0) { uku += "1"; --M; } } uku += ushi[i]; } reverse(uku.begin(), uku.end()); if(N > 0 or M > 0) return "inf"; return uku; }; auto p = make(N, M, K,false); auto q = make(N, M, K,true); p = min(p, q); if(p == "inf") cout << -1 << endl; else cout << p << endl; }