白俊12970号AB派SUN.


質問する



インプット



solution

n, k = map(int, input().split())
idx = 0
res = []  #len(res) 는 a의 개수 , a의 인덱스가 들어갈거임
cnt = 0
bcnt = n - 1  # b의 개수
for i in range(n):
    if cnt == k:
        break
    cnt -= len(res)  #a가 한개 들어가므로 쌍의 개수가 1개씩 사라짐
    bcnt -= 1  #a가 들어가므로 b의 개수가 줄어듬
    for j in range(n, idx, -1):
        if cnt + n - j == k: #k개의 쌍이 만들어지면 종료
            idx = j #사실 의미없는줄..
            res.append(j) # res에 A가 들어가는 인덱스
            cnt += n - j #만들수있는지 체크하기위해서 cnt를 넣어줌
            break
        if idx == j - 1 and cnt + n - j <= k:
            idx = j
            res.append(idx)
            cnt += n - j
        elif cnt + n - j < k:
            continue
        elif cnt + n - j > k:
            idx = j + 1
            cnt += n - j - 1
            res.append(j + 1)
            break
if cnt != k:
    print(-1)
else:
    ans = ''
    for i in range(1, n + 1):
        if i in res:
            ans += 'A'
        else:
            ans += 'B'
    print(ans)

説明:


まず、Bで字全体を埋め込むと仮定します.
入力が1012の場合、10行に12対の入力が必要です
B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B
Aを挿入
B B B B B B B B B B B B B Aの場合、0
B B B B B B B B A B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B A B B B B B B B B B B B B B B B B B B B B B B B B
ペアの数を表しながら、Aに対するインデックスをプライマリ周波数で左に送信し続ける
A B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B
res配列にAが入る位置のインデックス1を挿入し、
位置を記憶するためにidxにAのインデックス1を挿入する
12個未満ですので、もう1つAを挿入します
A B B B B B B B B Aだと前のAの数が消えてしまいます.
前に挿入したAの個数で対の個数を消去する
合計ペアの個数-len(res)は9-1であり、現在の状態ではペアの個数は8である
次に、Aの前の挿入インデックスに左に移動する前に、Aの前の挿入インデックスが1であるため、最大2に移動します.
左に移動すると
A B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B
1番Aペアの個数8個6番インデックスAペアの個数4個で合計12個です.
繰り返し文の終了
またresには1,6が挿入されているので,10の中の1番目と6の中にAを入れると12対になる.

ポスト


難しすぎます...