QOJ.ac
QOJ
ID | 题目 | 提交者 | 结果 | 用时 | 内存 | 语言 | 文件大小 | 提交时间 | 测评时间 |
---|---|---|---|---|---|---|---|---|---|
#635709 | #8719. 后继 | ainuo | WA | 1ms | 5696kb | C++14 | 1.2kb | 2024-10-12 20:41:28 | 2024-10-12 20:41:28 |
Judging History
answer
#include<bits/stdc++.h>
using namespace std;
const int N=4e5+10;
typedef long long ll;
ll p[N];
int num[N][32];
int ans[32];
int n,m,len=0;
int query(int u)
{
int f;
cout<<"? "<<u<<'\n';
cin>>f;
return f;
}
void solve()
{
int dx=0;
for(int i=len;i>=1;i--)
{
int flg_0=0,flg_1=0;
for(int j=1;j<=n;j++)
{
if(num[j][i]==1) flg_1=1;
if(num[j][i]==0) flg_0=1;
}
if(flg_0==0||flg_1==0)
{
ans[i]=0;
continue;
}
int d=1+dx;
int t=query(d);
if(t==-1)
{
dx++;
d=1+dx;
t=query(d);
}
if(num[t][i]==num[d][i]) ans[i]=num[t][i];
else ans[i]=1-num[t][i];
}
ll ans_num=0;
for(int i=1;i<=len;i++)
{
ans_num=ans_num*2+ans[i];
}
cout<<"! "<<ans_num<<'\n';
}
int main()
{
cin>>n>>m;
for(int i=1;i<=n;i++) cin>>p[i];
for(int i=1;i<=n;i++)
{
int x=p[i],cnt=0;
while(x)
{
num[i][++cnt]=x%2;
x/=2;
}
len=max(len,cnt);
}
while(m--) solve();
return 0;
}
詳細信息
Test #1:
score: 0
Wrong Answer
time: 1ms
memory: 5696kb
input:
5 1 1 2 3 4 5 5 5 5
output:
? 1 ? 1 ? 1 ! 4
result:
wrong answer 1st numbers differ - expected: '3', found: '4'