結果

問題 No.2553 Holidays
ユーザー KudeKude
提出日時 2023-11-25 14:15:55
言語 PyPy3
(7.3.15)
結果
AC  
実行時間 101 ms / 2,000 ms
コード長 938 bytes
コンパイル時間 186 ms
コンパイル使用メモリ 82,432 KB
実行使用メモリ 77,352 KB
最終ジャッジ日時 2024-09-26 10:41:26
合計ジャッジ時間 5,577 ms
ジャッジサーバーID
(参考情報)
judge2 / judge1
このコードへのチャレンジ
(要ログイン)
ファイルパターン 結果
sample AC * 3
other AC * 55
権限があれば一括ダウンロードができます

ソースコード

diff #

n, m = map(int, input().split())
ans = 0
d2 = []
g2 = 0
d1 = []
g1 = 0
for s in input().split('x'):
    ans += s.count('o')
    seg = s.split('o')
    if len(seg) == 1:
        l = len(seg[0])
        if l:
            d1.append(l)
    else:
        for l in map(len, [seg[0], seg[-1]]):
            if l % 2 == 0:
                g2 += l // 2
            else:
                g2 += l // 2
                g1 += 1
        for l in map(len, seg[1:-1]):
            if l % 2 == 0:
                g2 += l // 2
            else:
                d2.append(l)
d2.sort()
d1.sort(reverse=True)
for l in d2:
    if m >= l // 2:
        ans += l
        m -= l // 2
    else:
        ans += 2 * m
        m = 0
t = min(m, g2)
ans += 2 * t
m -= t
for l in d1:
    if not m:
        break
    ans += 1
    m -= 1
    l -= 1
    while m and l >= 2:
        m -= 1
        ans += 2
        l -= 2
    g1 += l
t = min(m, g1)
ans += t
m -= t
print(ans)
0