求助,调了一下午了
查看原帖
求助,调了一下午了
172205
myj128128楼主2023/8/7 19:58

为什么把scanf改成cincout就错了 //上面代码是ac的,下面改成cincout就wa1了

#include<bitsdc++.h>
using namespace std;
int T,n;
int Query(int l,int r)
{
    printf("? %d %d\n",l,r),fflush(stdout);
    int res;
    scanf("%d",&res);
    return res;
}
int Solve(int l,int r)
{
    if(l==r) return l;
    if(l+1==r) return Query(l,r)?l:r;
    int posl=Solve(l,l+r>>1),posr=Solve((l+r>>1)+1,r);
    return Query(l,posr-1)==Query(l,posr)?posr:posl;
}
signed main()
{
    scanf("%d",&T);
    while(T--)
    {
        scanf("%d",&n);
        printf("! %d\n",Solve(1,n)),fflush(stdout);
    }
    return 0;
}
#include<bits/stdc++.h>
using namespace std;
int T,n;
int Query(int l,int r)
{
    cout<<"? "<<l<<' '<<r<<'\n';
    fflush(stdout);
    int res;
    cin>>res;
    return res;
}
int Solve(int l,int r)
{
    if(l==r) return l;
    if(l+1==r) return Query(l,r)?l:r;
    int posl=Solve(l,l+r>>1),posr=Solve((l+r>>1)+1,r);
    return Query(l,posr-1)==Query(l,posr)?posr:posl;
}
signed main()
{
    cin>>T;
    while(T--)
    {
        cin>>n;
        cout<<"! "<<Solve(1,n)<<'\n',fflush(stdout);
    }
    return 0;
}
2023/8/7 19:58
加载中...