Codeforces Round 859 (Div. 4) E. Interview

Codeforces Round 859 (Div. 4) E. Interview

Div4里面交互题,二分答案即可,第一次做出交互题,直接纪念一下

#include<bits/stdc++.h>
using namespace std;

const int N = 200010;
int a[N],s[N];

bool check(int l,int r)
{
    cout<<"? "<<r-l+1<<" ";
    for(int i=l;i<=r;i++)
        cout<<i<<" ";
    cout<<endl;
    int x;cin>>x;
    if(s[r]-s[l-1]!=x) return true;
    else return false;
}

int main()
{
    int T;cin>>T;
    while(T--)
    {
        int n;cin>>n;
        for(int i=1;i<=n;i++) cin>>a[i];
        for(int i=1;i<=n;i++) s[i]=s[i-1]+a[i];
        int l=1,r=n;
        while(l<r)
        {
            int mid=(l+r)>>1;
            if(check(l,mid)) r=mid;
            else l=mid+1;
        }
        cout<<"! "<<r<<endl;
    }
    return 0;
}

版权声明:本文为qq_52792570原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。