結果
問題 | 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))