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
",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;
}
}