蒟蒻求调代码
查看原帖
蒟蒻求调代码
475629
LZH_LOVE_ZRG楼主2021/8/22 20:16

RT.

官方正解思路,后两个 Subtask 全 RE。

#include<bits/stdc++.h>
using namespace std;
const int N=5e4+10;
int n,m1,m2,m3;
int a[N],t[N];
int x,y;
int last,now;
inline void work(int x){
    int s=0;
    for(int i=1;i<=n;i++)
        if(!a[i])
            s++;
    printf("? %d ",s);
    for(int i=1;i<=n;i++)
        if(!a[i])
            printf("%d ",i);
    printf("%d\n",x);
    fflush(stdout);
}
int main(){
    scanf("%d%d%d%d",&n,&m1,&m2,&m3);
    int p=log2(n);
    if((1<<p)==n){
        work(n);
        scanf("%d%d",&x,&y);
        a[y]=n;
        last=y;
    }
    else{
        work(1<<p);
        scanf("%d",&x);
        long long s=0;
        while(x--){
            scanf("%d",&y);
            s+=y;
        }
        work((1<<p)+1);
        scanf("%d",&x);
        while(x--){
            scanf("%d",&y);
            t[++t[0]]=y;
            s-=y;
        }
        a[s]=1<<p;
        last=s;
        for(int i=1;i<=t[0];i++){
            printf("! %d %d\n",t[i],s);
            fflush(stdout);
            scanf("%d",&x);
            a[t[i]]=a[s]+x;
        }
    }
    p--;
    while(p>1){
        t[0]=0;
        work(1<<p);
        int x; scanf("%d",&x);
        while(x--){
            scanf("%d",&y);
            t[++t[0]]=y;
        }
        for(int i=1;i<=t[0];i++){
            printf("! %d %d\n",last,t[i]);
            fflush(stdout);
            scanf("%d",&x);
            if(!x) a[t[i]]=1<<p,now=t[i];
            else a[t[i]]=a[last]-x;
        }
        last=now;
        p--;
    }
    int first=0,second;
    for(int i=1;i<=n;i++)
        if(!a[i]){
            printf("! %d %d\n",last,i);
            fflush(stdout);
            scanf("%d",&x);
            if(x==1) a[i]=3,now=i;
            else (!first?first:second)=i;
        }
    printf("! %d %d\n",now,first);
    fflush(stdout);
    scanf("%d",&x);
    a[(!x?first:second)]=1;
    a[(!x?second:first)]=2;
    printf("A ");
    for(int i=1;i<=n;i++)
        printf("%d ",a[i]);
    puts("");
    fflush(stdout);
    return 0;
}
2021/8/22 20:16
加载中...