3138624_ac_563ms_608k.c

来自「北大大牛代码 1240道题的原代码 超级权威」· C语言 代码 · 共 57 行

C
57
字号
#include <stdio.h>

int a[100001];
int n, k;

int main()
{
	int i, t, fail;
	int min, mid, max;

	scanf("%d",&n);
	max = 0;
	for(i = 0; i < n; i++)
	{
		scanf("%d",&a[i]);
		if(a[i] > max)
		{
			max = a[i];
		}
	}
	scanf("%d",&k);
	k--;
	min = 1;
	while(min < max)
	{
		mid = (min+max)>>1;
		t = 0;
		fail = 0;
		for(i = 0; i < n; i++)
		{
			if(a[i] > mid)
			{
				if(k==0)
				{
					fail = 1;
					break;
				}
				t += (a[i]-mid)/k+((a[i]-mid)%k==0?0:1);
				if(t > mid)
				{
					fail = 1;
					break;
				}
			}
		}
		if(fail)
		{
			min = mid+1;
		}
		else
		{
			max = mid;
		}
	}
	printf("%d\n",min);
	return 0;
}

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?