結果
問題 | No.2247 01 ZigZag |
ユーザー |
![]() |
提出日時 | 2023-03-17 21:42:24 |
言語 | C++17 (gcc 13.3.0 + boost 1.87.0) |
結果 |
AC
|
実行時間 | 6 ms / 2,000 ms |
コード長 | 1,047 bytes |
コンパイル時間 | 1,881 ms |
コンパイル使用メモリ | 195,064 KB |
最終ジャッジ日時 | 2025-02-11 12:47:21 |
ジャッジサーバーID (参考情報) |
judge3 / judge3 |
(要ログイン)
ファイルパターン | 結果 |
---|---|
sample | AC * 2 |
other | AC * 50 |
ソースコード
#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 (f) {--M;Z += "1";} else {--N;Z += "0";}f ^= 1;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;}