結果

問題 No.2930 Larger Mex
ユーザー ID 21712
提出日時 2025-03-19 02:33:41
言語 Go
(1.23.4)
結果
AC  
実行時間 401 ms / 2,000 ms
コード長 684 bytes
コンパイル時間 12,140 ms
コンパイル使用メモリ 238,248 KB
実行使用メモリ 9,976 KB
最終ジャッジ日時 2025-03-19 02:34:14
合計ジャッジ時間 30,885 ms
ジャッジサーバーID
(参考情報)
judge5 / judge2
このコードへのチャレンジ
(要ログイン)
ファイルパターン 結果
sample AC * 3
other AC * 50
権限があれば一括ダウンロードができます

ソースコード

diff #

package main

import . "fmt"
import . "os"
import bf "bufio"

func main() {
	rd := bf.NewReader(Stdin)
	var n,m int
	Fscan(rd,&n,&m)
	a := make([]int, n)
	for i := range a {
		Fscan(rd,&a[i])
	}
	s := make([]int, n+2)
	f := make([]int, 2e5+1)
	cnt, l, r := 0, 0, 0
	f[a[0]]++
	if a[0] < m {
		cnt++
	}
	for l<n {
		if (cnt < m && r+1<=n) || (l > r) {
			r++
			if r < n {
				f[a[r]]++
				if a[r]<m&&f[a[r]]==1 {
					cnt++
				}
			}
		} else if l <= r {
			// Println("l=",l,", r=",r,", r-l+1=",r-l+1,",a[l:r]=",a[l:r])
			s[1]++
			s[r-l+1]--
			f[a[l]]--
			if a[l]<m&&f[a[l]]==0 {
				cnt--
			}
			l++
		}
	}
	x := 0
	for i,v := range s[1:][:n] {
		x += v
		Println(n-i-x)
	}
}
0