QOJ.ac
QOJ
ID | Problem | Submitter | Result | Time | Memory | Language | File size | Submit time | Judge time |
---|---|---|---|---|---|---|---|---|---|
#291655 | #6303. Inversion | zzuqy | WA | 7ms | 4824kb | C++14 | 2.4kb | 2023-12-27 02:17:57 | 2023-12-27 02:17:58 |
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=b[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[r+1];
return w1^w;
}
int main()
{
//freopen("1.in", "r", stdin);
cin>>n;
//cout<<endl;
rep(1,n,i)a[i]=i;
b[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;
fep(i-1,1,j)
{
if(b[j]>=r)
{
b[j+1]=b[j];
c[j]^=1;
}
}
c[i]=0;b[r]=i;
}
rep(1,n,i)c[b[i]]=i;
cout<<"!";
rep(1,n,i)cout<<' '<<c[i];
cout<<endl;
//cout<<cnt<<endl;
return 0;
}
Details
Tip: Click on the bar to expand more detailed information
Test #1:
score: 100
Accepted
time: 1ms
memory: 3708kb
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: 7ms
memory: 4824kb
input:
1993 0 0 0 0 0 1 1 0 0 0 0 0 1 0 1 1 0 0 1 0 1 1 0 1 1 1 1 1 1 0 1 1 0 0 0 0 0 0 0 1 0 0 1 1 0 1 1 0 0 0 0 0 0 0 1 0 0 1 1 0 0 0 1 0 0 0 0 1 1 1 0 0 1 1 0 0 0 1 0 1 0 0 0 1 1 1 0 1 0 1 0 0 0 1 1 1
output:
? 1 2 ? 2 3 ? 2 4 ? 3 4 ? 3 5 ? 4 5 ? 2 5 ? 1 5 ? 2 6 ? 3 6 ? 1 6 ? 5 6 ? 2 7 ? 3 7 ? 4 7 ? 2 8 ? 3 8 ? 5 8 ? 6 8 ? 7 8 ? 7 9 ? 8 9 ? 4 9 ? 5 9 ? 7 10 ? 8 10 ? 9 10 ? 7 11 ? 8 11 ? 9 11 ? 5 11 ? 6 11 ? 8 12 ? 9 12 ? 11 12 ? 8 13 ? 9 13 ? 10 13 ? 7 13 ? 8 14 ? 9 14 ? 12 14 ? 13 14 ? 5 14 ? 6 14 ? 8 1...
result:
wrong output format Unexpected end of file - int32 expected