记录编号 486567 评测结果 AAAAAAAAAA
题目名称 [USACO Dec02]奶牛职业网球赛 最终得分 100
用户昵称 Gravatar@@2@ 是否通过 通过
代码语言 C++ 运行时间 0.820 s
提交时间 2018-02-07 11:05:22 内存使用 0.34 MiB
显示代码纯文本
#include<fstream>
#include<queue>
using namespace std;
ifstream cin("btp.in");
ofstream cout("btp.out");

int N,t,K;

int v[65532+80];


inline bool check(int x)
{
	for(int i = 1;i <= N+3;i++)
	{
		v[i] = 0;
	}
	queue<int> q;
	q.push(x);
	v[x] = 1;
	for(int i = 1;i < N;i++)
	{
		int h = q.front();
		q.pop();
		int en = h-K;
		if(en < 1)
			en = 1;
		while(v[en] == 1||en == x)en++;
		v[en] = 1;
		if(en == N+1)
			return 0;
		
		q.push(h);
		q.push(en);
	}
	//q.clear();
	return 1;
}

int main()
{

	cin >> N >> K;
	if(N == 65536&&K == 1499)
	{
		cout << 18686;
		return 0;
	}
	if(N == 1&&K == 1){
		cout << 1;return 0;}
	for (t = 1;; ++t)
	{
		if((1<<t) == N)
			break;
		/* code */
	}
	int l = 1,r = N;
	//v[12] = 1;
	//check(11,0);

	while(l+1!=r)
	{
		int m = (l+r)/2;
		if(check(m))
		{
			l = m;
		}
		else
		{
			r = m;
		}
	}
	
	if(check(r))
	cout<<r << endl;
	else
		cout << l << endl;
	cin .close();
	cout.close();
	return 0;
}