QOJ.ac
QOJ
ID | 题目 | 提交者 | 结果 | 用时 | 内存 | 语言 | 文件大小 | 提交时间 | 测评时间 |
---|---|---|---|---|---|---|---|---|---|
#291663 | #6303. Inversion | zzuqy | WA | 69ms | 5340kb | C++14 | 2.4kb | 2023-12-27 02:25:36 | 2023-12-27 02:25:36 |
Judging History
answer
//#include <bits/stdc++.h>
#include <iostream>
#include <cstdio>
#include <ctime>
#include <cctype>
#include <queue>
#include <deque>
#include <stack>
#include <iostream>
#include <iomanip>
#include <cstdio>
#include <cstring>
#include <string>
#include <ctime>
#include <cmath>
#include <cctype>
#include <cstdlib>
#include <queue>
#include <deque>
#include <stack>
#include <vector>
#include <algorithm>
#include <utility>
#include <bitset>
#include <set>
#include <map>
#define ll long long
#define db double
#define INF 5000000000000000ll
#define inf 1000000000
#define ldb long double
#define pb push_back
#define put_(x) printf("%d ",x);
#define get(x) x=read()
#define putl(x) printf("%lld\n",x)
#define rep(p,n,i) for(int i=p;i<=n;++i)
#define go(x) for(int i=lin[x],tn=ver[i];i;tn=ver[i=nex[i]])
#define pii pair<int,int>
#define mk make_pair
#define P 1000000007ll
#define gf(x) scanf("%lf",&x)
#define pf(x) ((x)*(x))
#define uint unsigned long long
#define ui unsigned
#define sq sqrt
#define l(w) t[w].l
#define r(w) t[w].r
#define m(w) t[w].m
#define mn(w) t[w].mn
#define c(w) t[w].c
#define s(w) t[w].s
#define tag(w) t[w].tag
#define S second
#define mod 1000000007
#define sc(A) scanf("%d",&A)
#define scs(A) scanf("%s",A);
#define put(A) printf("%d\n",A)
#define zz p<<1
#define yy p<<1|1
#define fep(p,n,cc) for(int cc=p;cc>=n;--cc)
#define scl(A) scanf("%lld",&A)
using namespace std;
const int MAXN = 2010;
int T;
int n,cnt;
int a[MAXN];
int c[MAXN];
int b[MAXN];
map<int,int>H[MAXN];
int ask1(int l,int r)
{
if(l==r)return 0;
if(H[l].find(r)!=H[l].end())return H[l][r];
++cnt;
cout<<"?"<<' '<<l<<' '<<r<<endl;
//T=0;
cin>>T;
H[l][r]=T;
return T;
}
int check(int x,int id)
{
int w=0;
int l=x,r=id;
if(l>r)
{
w=1;
swap(l,r);
}
if(l+1==r)return ask1(l,r)^w;
int w1=ask1(l,r)^ask1(l+1,r)^c[l]^c[l+1];
return w1^w;
}
int main()
{
//freopen("1.in", "r", stdin);
cin>>n;
//cout<<endl;
b[1]=1;a[1]=1;
rep(2,n,i)
{
int l=1,r=i;
while(l+1<r)
{
int mid=(l+r)>>1;
if(check(mid,i))r=mid;
else l=mid;
}
if(check(l,i))r=l;
//cout<<r<<endl;
int ww=0;
fep(i-1,1,j)
{
if(a[j]>=r)
{
++a[j];
++ww;
}
c[j]^=(ww&1);
}
c[i]=0;a[i]=r;
}
rep(1,n,i)c[b[i]]=i;
cout<<"!";
rep(1,n,i)cout<<' '<<a[i];
cout<<endl;
//cout<<cnt<<endl;
return 0;
}
詳細信息
Test #1:
score: 100
Accepted
time: 0ms
memory: 3800kb
input:
3 0 1 0
output:
? 1 2 ? 2 3 ? 1 3 ! 2 3 1
result:
ok OK, guesses=3
Test #2:
score: -100
Wrong Answer
time: 69ms
memory: 5340kb
input:
1993 0 0 0 0 0 1 1 0 0 0 0 0 1 0 1 0 0 0 0 1 0 1 0 1 1 1 1 1 1 1 1 1 0 1 0 0 0 0 0 0 0 0 0 0 1 1 1 1 0 1 1 1 1 0 0 0 0 0 1 1 0 0 1 0 1 1 0 1 1 0 1 0 0 0 1 0 1 0 1 1 1 0 0 1 1 1 0 0 1 0 1 0 0 0 0 0 0 1 1 1 0 0 1 1 0 1 1 1 1 0 1 1 1 0 1 1 1 1 1 0 1 1 0 0 1 0 1 1 0 1 0 1 0 1 1 1 0 0 1 1 1 1 0 1 1 1 0 1...
output:
? 1 2 ? 2 3 ? 2 4 ? 3 4 ? 3 5 ? 4 5 ? 2 5 ? 1 5 ? 3 6 ? 4 6 ? 2 6 ? 1 6 ? 4 7 ? 5 7 ? 2 7 ? 3 7 ? 1 7 ? 4 8 ? 5 8 ? 2 8 ? 3 8 ? 5 9 ? 6 9 ? 7 9 ? 8 9 ? 5 10 ? 6 10 ? 3 10 ? 4 10 ? 6 11 ? 7 11 ? 3 11 ? 4 11 ? 5 11 ? 6 12 ? 7 12 ? 3 12 ? 4 12 ? 5 12 ? 7 13 ? 8 13 ? 10 13 ? 11 13 ? 12 13 ? 7 14 ? 8 14 ...
result:
wrong answer Wa.