結果

問題 No.3585 Make Ends Meet (Easy)
コンテスト
ユーザー 달콤한마시로
提出日時 2026-07-10 22:32:22
言語 Python3
(3.14.3 + numpy 2.4.4 + scipy 1.17.1)
コンパイル:
python3 -mpy_compile _filename_
実行:
python3 _filename_
結果
AC  
実行時間 111 ms / 2,000 ms
コード長 949 bytes
記録
記録タグの例:
初AC ショートコード 純ショートコード 純主流ショートコード 最速実行時間
コンパイル時間 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
権限があれば一括ダウンロードができます

ソースコード

diff #
raw source code

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')
0