pku2456.cpp

来自「这是ACM 方面的资料 是PKU的 北京大学的出来的」· C++ 代码 · 共 63 行

CPP
63
字号
#include <stdio.h>
#include <algorithm>
using namespace std;

const int size = 100001;
int p[size];
int N, C;

int Calc(int x)
{
	int cnt = 1;
	int i, last;
	last = p[0];
	for (i = 1; i < N && cnt <= C; i++)
	{
		if (p[i] - last >= x)
		{
			cnt++;
			last = p[i];
		}
	}
	return cnt;
}

int main()
{
	int i, tmp;
	int min, max, mid;
	while (scanf("%d %d", &N, &C) != -1)
	{
		for (i = 0; i < N; i++)
		{
			scanf("%d", &p[i]);
		}
		sort(p, p + N);
		min = 0;
		max = (p[N - 1] - p[0]) / (C - 1) + 1;
		while (min + 1 < max)
		{
			mid = (min + max) >> 1;
			tmp = Calc(mid);
			if (tmp >= C)
			{
				min = mid;
			}
			else
			{
				max = mid;
			}
		}
		if (Calc(max) >= C)
		{
			printf("%d\n", max);
		}
		else
		{
			printf("%d\n", min);
		}
	}		
	return 0;
}

⌨️ 快捷键说明

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