結果

問題 No.3780 Erase and Mex
コンテスト
ユーザー pengin_2000
提出日時 2026-10-30 22:36:45
言語 C
(gcc 15.3.0)
コンパイル:
gcc-15 -O2 -fplugin=/usr/lib/yukicoder/noavx512-gcc15.so -DONLINE_JUDGE -o a.out _filename_ -lm
実行:
./a.out
結果
WA  
実行時間 -
コード長 793 bytes
記録
記録タグの例:
初AC ショートコード 純ショートコード 純主流ショートコード 最速実行時間
コンパイル時間 662 ms
コンパイル使用メモリ 41,912 KB
実行使用メモリ 9,928 KB
最終ジャッジ日時 2026-10-30 22:36:57
合計ジャッジ時間 4,769 ms
ジャッジサーバーID
(参考情報)
judge2_0 / judge4_0
このコードへのチャレンジ
(要ログイン)
ファイルパターン 結果
sample AC * 1
other AC * 14 WA * 29
権限があれば一括ダウンロードができます

ソースコード

diff #
raw source code

#include<stdio.h>
int a[200005];
int cnt[200005];
void solve()
{
	int n;
	scanf("%d", &n);
	int i;
	for (i = 0; i < n; i++)
		scanf("%d", &a[i]);
	if (n == 1)
	{
		if (a[0] > 0)
			printf("%d\n", a[0]);
		else
			printf("1\n");
		return;
	}
	int min, mid, max;
	min = 0;
	max = n + 1;
	int m;
	while (max - min > 1)
	{
		mid = (max + min) / 2;
		for (i = 0; i < mid; i++)
			cnt[i] = 0;
		for (i = 0; i < n; i++)
		{
			if (a[i] < mid)
				cnt[a[i]]++;
			else
				cnt[0]++;
		}
		m = 1;
		for (i = mid - 1; i > 0; i--)
		{
			if (cnt[i] > m)
			{
				cnt[0] += cnt[i] - m;
			}
			else
			{
				m += m - cnt[i];
			}
		}
		if (cnt[0] < m)
			max = mid;
		else
			min = mid;
	}
	printf("%d\n", min);
	return;
}
int main()
{
	int T;
	scanf("%d", &T);
	for (; T > 0; T--)
		solve();
	return 0;
}
0