結果
| 問題 |
No.466 ジオラマ
|
| コンテスト | |
| ユーザー |
|
| 提出日時 | 2017-06-28 15:05:47 |
| 言語 | Python2 (2.7.18) |
| 結果 |
AC
|
| 実行時間 | 20 ms / 2,000 ms |
| コード長 | 2,347 bytes |
| コンパイル時間 | 143 ms |
| コンパイル使用メモリ | 7,040 KB |
| 実行使用メモリ | 7,296 KB |
| 最終ジャッジ日時 | 2024-10-04 14:48:32 |
| 合計ジャッジ時間 | 3,596 ms |
|
ジャッジサーバーID (参考情報) |
judge4 / judge5 |
(要ログイン)
| ファイルパターン | 結果 |
|---|---|
| sample | AC * 4 |
| other | AC * 83 |
ソースコード
# -*- coding: utf-8 -*-
def solve(input):
A = int(input.split()[0]) # 村0から水を流すと、村0を含めて A 個の村に水が届いた。
B = int(input.split()[1]) # 村1から水を流すと、村1を含めて B 個の村に水が届いた。
C = int(input.split()[2]) # 村0からも村1からも水が届いた村は C 個であった。(ただし、C≤min(A,B)C≤min(A,B) をみたす。)
D = int(input.split()[3]) # 水路は D 本以下であった。
N = 0
M = 0
vIndex = 2
ans = []
if A == B == C and C < 2:
D = -1
pass
elif A == B == C:
C -= 2
ans.append("0 1")
ans.append("1 0")
for r in xrange(C):
ans.append("0 " + str(vIndex))
vIndex += 1
pass
elif A == C:
A -= 1 # 自分
B -= 1 # 自分
ans.append("1 0")
B -= 1
C -= 1
for r in xrange(C):
ans.append("0 " + str(vIndex))
vIndex += 1
B -= 1
A -= 1
for r in xrange(B):
ans.append("1 " + str(vIndex))
vIndex += 1
pass
elif B == C:
A -= 1 # 自分
B -= 1 # 自分
ans.append("0 1")
A -= 1
C -= 1
for r in xrange(C):
ans.append("1 " + str(vIndex))
vIndex += 1
B -= 1
A -= 1
for r in xrange(A):
ans.append("0 " + str(vIndex))
vIndex += 1
pass
else:
A -= 1 # 自分
B -= 1 # 自分
for r in xrange(C):
if r == 0:
ans.append("0 2")
ans.append("1 2")
vIndex += 1
A -= 1
B -= 1
continue
ans.append("2 " + str(vIndex))
A -= 1
B -= 1
vIndex += 1
for r in xrange(A):
ans.append("0 " + str(vIndex))
vIndex += 1
for r in xrange(B):
ans.append("1 " + str(vIndex))
vIndex += 1
pass
ans.sort()
if len(ans) <= D:
ans.insert(0, str(vIndex) + " " + str(len(ans)))
else:
ans = ["-1"]
return ans
if __name__ == "__main__":
ex = solve(raw_input())
for l in ex:
print l