結果
| 問題 | No.2930 Larger Mex | 
| コンテスト | |
| ユーザー |  | 
| 提出日時 | 2025-06-17 17:30:11 | 
| 言語 | PyPy3 (7.3.15) | 
| 結果 | 
                                AC
                                 
                             | 
| 実行時間 | 170 ms / 2,000 ms | 
| コード長 | 1,348 bytes | 
| コンパイル時間 | 298 ms | 
| コンパイル使用メモリ | 82,232 KB | 
| 実行使用メモリ | 119,116 KB | 
| 最終ジャッジ日時 | 2025-06-17 17:30:21 | 
| 合計ジャッジ時間 | 10,137 ms | 
| ジャッジサーバーID (参考情報) | judge1 / judge3 | 
(要ログイン)
| ファイルパターン | 結果 | 
|---|---|
| sample | AC * 3 | 
| other | AC * 50 | 
ソースコード
N,M = map(int,input().split())
A = list(map(int,input().split()))
ans = [0]*(N+2)
if M==0:
    for l in range(N):
        ans[1] += 1
        ans[N-l+1] -= 1
else:
    C = {}
    l = 0
    r = N+1
    for i in range(N):
        if 0<=A[i]<M:
            if A[i] not in C:
                C[A[i]] = 0
            C[A[i]] += 1
            if len(C)==M:
                r = i
                break
    if r<=N:
        ans[r-l+1] += 1
        ans[N-l+1] -= 1
        for l in range(1,N):
            if A[l-1] not in C:
                ans[r-l+1] += 1
                ans[N-l+1] -= 1
            else:
                C[A[l-1]] -= 1
                if C[A[l-1]]>0:
                    ans[r-l+1] += 1
                    ans[N-l+1] -= 1
                else:
                    a = A[l-1]
                    j = r+1
                    while j<N:
                        if A[j]==a:
                            C[a] += 1
                            r = j
                            break
                        if 0<=A[j]<M:
                            C[A[j]] += 1
                        j += 1
                    if j<N:
                        ans[r-l+1] += 1
                        ans[N-l+1] -= 1
                    else:
                        break
for i in range(1,N+1):
    ans[i] += ans[i-1]
for i in range(1,N+1):
    print(ans[i])
            
            
            
        