結果
| 問題 |
No.1635 Let’s Sort Integers!!
|
| コンテスト | |
| ユーザー |
とりゐ
|
| 提出日時 | 2021-07-05 23:05:55 |
| 言語 | PyPy3 (7.3.15) |
| 結果 |
AC
|
| 実行時間 | 288 ms / 2,000 ms |
| コード長 | 755 bytes |
| コンパイル時間 | 603 ms |
| コンパイル使用メモリ | 81,872 KB |
| 実行使用メモリ | 195,584 KB |
| 最終ジャッジ日時 | 2024-09-15 21:29:36 |
| 合計ジャッジ時間 | 21,166 ms |
|
ジャッジサーバーID (参考情報) |
judge6 / judge3 |
(要ログイン)
| ファイルパターン | 結果 |
|---|---|
| sample | AC * 3 |
| other | AC * 77 |
ソースコード
def f(n,k):
if k>n**2//2-1:
return [-1]
ans=[0]*n
if n%2==1:
m=n**2//2-k+n//2+1
x=n//2+2
else:
m=n**2//2-k+n//2
x=n//2+1
for i in range(n//2):
if x+i==m:
ans[2*i]=x
else:
ans[2*i]=x+i
ans[2*i+1]=i+1
if n%2==1:
ans[n-1]=n//2+1
ans[0]=m
return ans
def g(n,k):
#k<=n*(n-1)//2
used=[1]*(n+1)
used[n]=0
k-=n-1
ans=[n]
L=n
for i in range(n-2):
if i%2==0:
a=i//2+2
else:
a=n-(i+1)//2
if k>=abs(L-a):
k-=abs(L-a)
L=a
used[a]=0
ans.append(a)
ans2=[]
for i in range(1,n):
if used[i]:
ans2.append(i)
return ans2+ans
n,k=map(int,input().split())
if k<n-1:
print(-1)
if k>n*(n-1)//2:
print(*f(n,k))
else:
print(*g(n,k))
とりゐ