rt,下面的代码为什么CE了?报告错误为返回值为 1,有没有大佬解答一下?
#include<bits/stdc++.h>
using namespace std;
int h,n;
struct P{
int m,k;
}p[1<<(18+10)];
bool cmp(P _a,P _b){
return _a.k>_b.k;
}
int main(){
// srand((unsigned)time(0));
scanf("%d",&h);
n=1<<(h-1);
for(int i=1;i<=n;i++) p[i].m=i;
for(int i=1;i<=420;i++){
int a=0,b=0,c=0;
while(a==b||b==c||c==a){
// a=(rand()<<16|rand())%n+1;
// b=(rand()<<16|rand())%n+1;
// c=(rand()<<16|rand())%n+1;
}
printf("? %d %d %d\n",a,b,c);
// fflush(stdout);
int x;
scanf("%d",&x);
p[x].k++;
}
sort(p+1,p+n+1,cmp);
for(int i=1;i<=n;i++){
if(i==p[1].k||i==p[2].k) continue;
printf("? %d %d %d\n",p[1].k,p[2].k,i);
// fflush(stdout);
int x;
scanf("%d",&x);
if(x==i){
printf("! %d",i);
// fflush(stdout);
return 0;
}
}
return 0;
}