結果

問題 No.3780 Erase and Mex
コンテスト
ユーザー pengin_2000
提出日時 2026-10-30 22:53:40
言語 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  
実行時間 -
コード長 841 bytes
記録
記録タグの例:
初AC ショートコード 純ショートコード 純主流ショートコード 最速実行時間
コンパイル時間 1,407 ms
コンパイル使用メモリ 41,784 KB
実行使用メモリ 9,924 KB
最終ジャッジ日時 2026-10-30 22:54:04
合計ジャッジ時間 4,731 ms
ジャッジサーバーID
(参考情報)
judge4_0 / judge7_0
このコードへのチャレンジ
(要ログイン)
ファイルパターン 結果
sample AC * 1
other AC * 14 WA * 29
権限があれば一括ダウンロードができます

ソースコード

diff #
raw source code

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