結果
問題 |
No.2567 A_1 > A_2 > ... > A_N
|
ユーザー |
![]() |
提出日時 | 2024-10-08 15:40:51 |
言語 | Python3 (3.13.1 + numpy 2.2.1 + scipy 1.14.1) |
結果 |
AC
|
実行時間 | 579 ms / 2,000 ms |
コード長 | 1,060 bytes |
コンパイル時間 | 156 ms |
コンパイル使用メモリ | 12,416 KB |
実行使用メモリ | 22,964 KB |
最終ジャッジ日時 | 2024-10-08 15:40:57 |
合計ジャッジ時間 | 5,679 ms |
ジャッジサーバーID (参考情報) |
judge4 / judge3 |
(要ログイン)
ファイルパターン | 結果 |
---|---|
sample | AC * 1 |
other | AC * 16 |
ソースコード
T = int(input()) query = [] for i in range(T): n,x = map(int,input().split()) query.append([n,x]) #def kinou(N,X,ans): # if N <= 0 or X <= 0: # return 0 # saisyo = N*(N+1)//2 # hamidasi = X - saisyo # mod = (hamidasi+N-1)//N # print(saisyo,hamidasi,mod) # ans.append(N+mod) # kinou(N-1,(X-N-mod),ans) # for q in query: N = q[0] X = q[1] #N=4 #X=28 ans = [] if N*(N+1)//2 > X: #10>28 print(-1) continue saisyo = N*(N+1)//2 #[4,3,2,1]で10 hamidasi = X - saisyo #18 saidai = N + (hamidasi+N-1)//N #[9,8,7,6]で30 #[8,7,6,5]で26 #最大の数が8だと足りない #saidai=9になるように調整 # print(saisyo,hamidasi,saidai) v = N*(2*saidai-N+1)//2 #print(v,"v") ans1 = list(reversed(range(saidai-N+1,saidai+1))) ans2 = list(reversed(range(saidai-N,saidai))) #print(ans1,ans2) #一旦ans1 = [9,8,7,6] if v != X: ans = ans1[:-v+X]+ans2[-(v-X):] else: ans = ans1 print(*ans)