VIrtuoso

两把多兰剑加个布甲鞋

导航

Codeforces Round #507 (Div. 2, based on Olympiad of Metropolises) D mt19937

https://codeforces.com/contest/1040/problem/D

用法

mt19937 g(种子);  //种子:time(0)
mt19937_64 g();  //long long

ll x=g();   //调用

代码

#include<bits/stdc++.h>
#define ll long long 
#define P 23

using namespace std;
ll n,l,r,k;
char s[5];
ll mu=1;
mt19937_64 g(time(0));

ll gen(ll l,ll r){
	ll len=r-l+1;
	ll x=g()%len+l;
	return x;
}

int ak(ll l,ll r){
	printf("%lld %lld\n",l,r);
    fflush(stdout);
	scanf("%s",s);
	if(s[0]=='Y')return 1;
	else return 0;
}

int main(){
	cin>>n>>k;
	if(n<=200){
		while(1){
			ll gs=gen(1,n);
			if(ak(gs,gs))return 0;
		}
	}	
	while(1){
	     l=1;r=n;
	     while(l+50<r){
		      ll mid=(l+r)/2;
		      if(ak(l,mid))r=mid;
			  else l=mid+1;
			  l=max(l-k,1ll);
			  r=min(r+k,n);
	    }
		ll gs=gen(l,r);
		if(ak(gs,gs))return 0;
	}
}
	

posted on 2019-05-04 21:18  VIrtuoso  阅读(156)  评论(0编辑  收藏  举报