結果
| 問題 | 
                            No.2247 01 ZigZag
                             | 
                    
| コンテスト | |
| ユーザー | 
                             | 
                    
| 提出日時 | 2023-03-17 22:13:51 | 
| 言語 | Ruby  (3.4.1)  | 
                    
| 結果 | 
                             
                                WA
                                 
                             
                            
                            (最新)
                                AC
                                 
                             
                            (最初)
                            
                            
                         | 
                    
| 実行時間 | - | 
| コード長 | 901 bytes | 
| コンパイル時間 | 191 ms | 
| コンパイル使用メモリ | 7,424 KB | 
| 実行使用メモリ | 12,800 KB | 
| 最終ジャッジ日時 | 2024-09-18 16:10:43 | 
| 合計ジャッジ時間 | 6,522 ms | 
| 
                            ジャッジサーバーID (参考情報)  | 
                        judge1 / judge2 | 
(要ログイン)
| ファイルパターン | 結果 | 
|---|---|
| sample | AC * 2 | 
| other | AC * 49 WA * 1 | 
コンパイルメッセージ
Syntax OK
ソースコード
def lscan; gets.chomp.split.map(&:to_i); end
def solve(n, m, k)
  if n == 0
    return '-1' if k > 0
    return '1'*m
  end
  if m == 0
    return '-1' if k > 0
    return '0'*n
  end
  
  # 10001 > 00110
  # 10101 k=4
  # 01010 k=4
  # 0010110 k=4
  
  if k.odd?
    c = [n,m].min
    return '-1' if c*2 < k+1
    c = (k + 1) / 2
    # mid = '01'*c
    n -= c
    m -= c
    return '0'*n + '01'*c + '1'*m
  end
  
  if k.even?
    if n >= k/2+1 && m >= k/2
      # 0010110
      c = k/2
      # mid = '01'*c
      n -= c
      m -= c
      # tail = '0'
      n -= 1
      return '0'*n + '01'*c + '1'*m + '0'
    end
    
    if n >= k/2 && m >= k/2+1
      # 10-0101
      c = k/2
      # mid = '01'*c
      n -= c
      m -= c
      # head = '1'
      m -= 1
      return '1' + '0'*n + '01'*c + '1'*m
    end
  end
  
  '-1'
end
while line = gets
  puts solve(*line.chomp.split.map(&:to_i))
end