結果
| 問題 | No.3585 Make Ends Meet (Easy) |
| コンテスト | |
| ユーザー |
|
| 提出日時 | 2026-07-10 22:32:22 |
| 言語 | Python3 (3.14.3 + numpy 2.4.4 + scipy 1.17.1) |
| 結果 |
AC
|
| 実行時間 | 111 ms / 2,000 ms |
| コード長 | 949 bytes |
| 記録 | |
| コンパイル時間 | 625 ms |
| コンパイル使用メモリ | 21,668 KB |
| 実行使用メモリ | 15,872 KB |
| 最終ジャッジ日時 | 2026-07-10 22:32:30 |
| 合計ジャッジ時間 | 7,332 ms |
|
ジャッジサーバーID (参考情報) |
judge3_0 / judge2_1 |
(要ログイン)
| ファイルパターン | 結果 |
|---|---|
| sample | AC * 2 |
| other | AC * 48 |
ソースコード
def rr(n, k):
res = [1] * (k + 1)
res[1] += n - sum(res)
return res
n, m, k = map(int, input().split())
nns = rr(n, k)
s = 0
for i in range(len(nns)):
s, nns[i] = s + nns[i], s
assert s == n
assert len(nns) == k + 1
nns.append(n)
req = n*(n-1)//2 - m
adj = [[0 for j in range(n)] for i in range(n)]
ne = 0
def pe(i, j):
if adj[i][j]: return
adj[i][j] = adj[j][i] = 1
global ne; ne += 1
def g():
for i in range(k):
for u in range(nns[i], nns[i + 1]):
for v in range(nns[i + 1], nns[i + 2]):
yield (u, v)
for i in range(k+1):
for u in range(nns[i], nns[i + 1]):
for v in range(u + 1, nns[i + 1]):
yield (u, v)
for i in range(k):
pe(nns[i+1]-1, nns[i+2]-1)
success = True
if ne > req:
success = False
else:
for u, v in g():
if ne >= req: break
pe(u, v)
if ne != req:
success = False
if success:
print('Yes')
for i in range(n):
for j in range(i):
if not adj[i][j]:
print(j+1, i+1)
else:
print('No')