/ SeriousOJ /

Record Detail

Wrong Answer


  
# Status Time Cost Memory Cost
#1 Wrong Answer 18ms 3.578 MiB
#2 Wrong Answer 19ms 3.41 MiB

Code

import heapq
from collections import Counter

def rearrange_string(s):
    n = len(s)
    freq = Counter(s)
    
    # اگر بیشترین تکرار از نصف طول رشته بیشتر باشد، غیرممکن است
    if any(count > (n + 1) // 2 for count in freq.values()):
        return "-1"
    
    # استفاده از min heap با فرکانس منفی برای ساخت کوچک‌ترین رشته ممکن
    heap = []
    for ch in sorted(freq):  # حروف را مرتب می‌کنیم تا رشته نهایی lex smallest باشد
        heapq.heappush(heap, (-freq[ch], ch))  # max heap از طریق فرکانس منفی
    
    result = []
    prev_freq, prev_ch = 0, ''
    
    while heap:
        freq_curr, ch_curr = heapq.heappop(heap)
        result.append(ch_curr)

        # حرف قبلی را دوباره به هیپ اضافه کن اگر هنوز باقی مانده
        if prev_freq < 0:
            heapq.heappush(heap, (prev_freq, prev_ch))
        
        # به‌روزرسانی حرف قبلی برای دفعه بعد
        prev_freq = freq_curr + 1  # چون منفی هست، افزایش یعنی کاهش فرکانس واقعی
        prev_ch = ch_curr
    
    return ''.join(result)

# پردازش ورودی
T = int(input())
for _ in range(T):
    S = input().strip()
    print(rearrange_string(S))

Information

Submit By
Type
Submission
Problem
P1209 B. Rearrange the String
Contest
Educational Round 1
Language
Python 3 (Python 3.12.3)
Submit At
2025-07-14 15:42:43
Judged At
2025-07-14 15:42:43
Judged By
Score
0
Total Time
19ms
Peak Memory
3.578 MiB