結果
| 問題 |
No.466 ジオラマ
|
| コンテスト | |
| ユーザー |
maspy
|
| 提出日時 | 2020-03-22 06:56:00 |
| 言語 | Python3 (3.13.1 + numpy 2.2.1 + scipy 1.14.1) |
| 結果 |
AC
|
| 実行時間 | 74 ms / 2,000 ms |
| コード長 | 1,480 bytes |
| コンパイル時間 | 290 ms |
| コンパイル使用メモリ | 12,672 KB |
| 実行使用メモリ | 14,208 KB |
| 最終ジャッジ日時 | 2024-12-24 16:49:09 |
| 合計ジャッジ時間 | 7,266 ms |
|
ジャッジサーバーID (参考情報) |
judge2 / judge1 |
(要ログイン)
| ファイルパターン | 結果 |
|---|---|
| sample | AC * 4 |
| other | AC * 83 |
ソースコード
#!/usr/bin/ python3.8
import sys
read = sys.stdin.buffer.read
readline = sys.stdin.buffer.readline
readlines = sys.stdin.buffer.readlines
A, B, C, D = map(int, read().split())
def output(edges):
M = len(edges)
if M == 0:
print(2, 0)
exit()
A, B = zip(*edges)
N = 1 + max(A + B)
if M > D:
print(-1)
else:
print(N, M)
for a, b in zip(A, B):
print(a, b)
def solve(A, B, C):
if A == B == C:
if A == 1:
print(-1)
exit()
return [(n, (n + 1) % A) for n in range(A)]
edges = []
if A == C < B:
edges += [(1, 0)]
for n in range(2, C + 1):
edges.append((0, n))
for n in range(C + 1, B):
edges.append((1, n))
return edges
if B == C < A:
edges += [(0, 1)]
for n in range(2, C + 1):
edges.append((1, n))
for n in range(C + 1, A):
edges.append((0, n))
return edges
if C == 0:
for n in range(2, A + 1):
edges.append((0, n))
for n in range(A + 1, A + B):
edges.append((1, n))
return edges
edges.append((0, 2))
edges.append((1, 2))
for n in range(2, C + 1):
edges.append((n, n + 1))
for n in range(C + 2, A + 1):
edges.append((0, n))
for n in range(A + 1, A + 1 + B - C - 1):
edges.append((1, n))
return edges
edges = solve(A, B, C)
output(edges)
maspy