結果
問題 |
No.1635 Let’s Sort Integers!!
|
ユーザー |
![]() |
提出日時 | 2021-07-05 02:32:32 |
言語 | PyPy3 (7.3.15) |
結果 |
AC
|
実行時間 | 294 ms / 2,000 ms |
コード長 | 1,060 bytes |
コンパイル時間 | 225 ms |
コンパイル使用メモリ | 82,048 KB |
実行使用メモリ | 194,944 KB |
最終ジャッジ日時 | 2024-09-15 21:28:25 |
合計ジャッジ時間 | 20,361 ms |
ジャッジサーバーID (参考情報) |
judge3 / judge2 |
(要ログイン)
ファイルパターン | 結果 |
---|---|
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] ans=[0]*n m=(n**2-3)//2-k+n//2+2 for i in range(n//2): if n//2+2+i==m: ans[2*i]=n//2+2 else: ans[2*i]=n//2+2+i ans[2*i+1]=i+1 ans[n-1]=n//2+1 ans[0]=m return ans def f2(n,k): #n%2==0 and k>n*(n-1)//2 if k>n**2//2-1: return [-1] ans=[0]*n m=n**2//2-k+n//2 for i in range(n//2): if n//2+1+i==m: ans[2*i]=n//2+1 else: ans[2*i]=n//2+1+i ans[2*i+1]=i+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) 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))