結果
| 問題 |
No.1635 Let’s Sort Integers!!
|
| コンテスト | |
| ユーザー |
とりゐ
|
| 提出日時 | 2021-06-12 15:22:17 |
| 言語 | Python3 (3.13.1 + numpy 2.2.1 + scipy 1.14.1) |
| 結果 |
AC
|
| 実行時間 | 987 ms / 2,000 ms |
| コード長 | 1,524 bytes |
| コンパイル時間 | 100 ms |
| コンパイル使用メモリ | 12,672 KB |
| 実行使用メモリ | 65,792 KB |
| 最終ジャッジ日時 | 2024-09-15 21:22:55 |
| 合計ジャッジ時間 | 27,746 ms |
|
ジャッジサーバーID (参考情報) |
judge4 / judge5 |
(要ログイン)
| ファイルパターン | 結果 |
|---|---|
| sample | AC * 3 |
| other | AC * 77 |
ソースコード
def f(n,k):
#n%2==1 and k>n*(n-1)//2
if k>(n**2-3)//2:
return [-1]
else:
ans=[0]*n
ans[0]=n//2+1
t=(n**2-3)//2-k+n//2+2
ans[n-1]=t
a=1
b=n
for i in range(1,n-1):
if i%2==1:
ans[i]=a
a+=1
else:
if b==t:
b-=1
ans[i]=b
b-=1
return ans
def f2(n,k):
#n%2==0 and k>n*(n-1)//2
if k>n**2//2-1:
return [-1]
else:
ans=[0]*n
ans[n-1]=n//2
t=(n**2//2-1)-k+n//2+1
ans[0]=t
a=1
b=n
for i in range(1,n-1):
if i%2==1:
ans[i]=a
a+=1
else:
if b==t:
b-=1
ans[i]=b
b-=1
return ans
def g(n,k):
#k<=n*(n-1)//2
used=[1]*(n+1)
used[1]=0
used[n]=0
cnt=k-(n-1)
ans=[]
ans2=[n]
a=n
b=1
for i in range(n-2):
if cnt!=0:
if i%2==0:
if cnt<=(a-1)-b:
used[b+cnt]=0
ans.append(b+cnt)
cnt=0
else:
a-=1
ans.append(a)
cnt-=a-b
used[a]=0
else:
if cnt<=a-(b+1):
used[a-cnt]=0
ans.append(a-cnt)
cnt=0
else:
b+=1
cnt-=a-b
used[b]=0
ans.append(b)
for i in range(n-1,1,-1):
if used[i]:
ans2.append(i)
ans2.append(1)
return ans2+ans
n,k=map(int,input().split())
if k<n-1:
print(-1)
elif n%2==1:
if k>n*(n-1)//2:
print(*f(n,k))
else:
print(*g(n,k))
else:
if k>n*(n-1)//2:
print(*f2(n,k))
else:
print(*g(n,k))
とりゐ