QOJ.ac
QOJ
ID | 题目 | 提交者 | 结果 | 用时 | 内存 | 语言 | 文件大小 | 提交时间 | 测评时间 |
---|---|---|---|---|---|---|---|---|---|
#291638 | #6303. Inversion | zzuqy | WA | 41ms | 3616kb | C++14 | 2.3kb | 2023-12-27 01:06:44 | 2023-12-27 01:06:44 |
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;
int a[MAXN];
int c[MAXN];
int ask1(int l,int r)
{
if(l==r)return 0;
cout<<"?"<<' '<<l<<' '<<r<<endl;
cin>>T;
return T;
}
int ask(int l,int r)
{
int w=0;
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)^ask1(l,r-1)^ask1(l+1,r-1);
return w1^w;
}
void CDQ(int l,int r)
{
if(l==r)
{
a[l]=l;
return;
}
int mid=(l+r)>>1;
CDQ(l,mid);
CDQ(mid+1,r);
int i=l,j=mid+1;
rep(l,r,k)
{
if(j>r)c[k]=a[i],++i;
else
{
if(i>mid||ask(a[i],a[j]))
{
c[k]=a[j];
++j;
}
else c[k]=a[i],++i;
}
}
rep(l,r,k)a[k]=c[k];
}
int main()
{
//freopen("1.in", "r", stdin);
cin>>n;
//cout<<endl;
CDQ(1,n);
rep(1,n,i)c[a[i]]=i;
cout<<"!";
rep(1,n,i)cout<<' '<<c[i];
cout<<endl;
return 0;
}
详细
Test #1:
score: 100
Accepted
time: 0ms
memory: 3608kb
input:
3 0 0 1 0
output:
? 1 2 ? 1 3 ? 2 3 ? 1 2 ! 2 3 1
result:
ok OK, guesses=4
Test #2:
score: -100
Wrong Answer
time: 41ms
memory: 3616kb
input:
1993 0 0 0 0 0 0 0 0 0 1 0 0 1 0 1 1 0 1 0 1 0 0 0 1 0 0 0 0 0 1 0 1 0 1 1 0 1 0 0 0 0 1 1 0 0 0 0 1 0 0 0 0 1 0 0 0 0 1 1 0 0 0 1 1 0 0 1 0 0 0 1 0 1 0 1 1 0 1 0 0 1 1 1 1 0 0 1 1 1 1 1 1 1 0 1 0 0 0 1 1 1 1 1 1 1 1 1 1 0 0 1 1 0 1 1 1 0 1 1 1 1 0 0 0 1 1 0 0 1 0 0 0 1 1 1 1 1 1 1 0 1 1 0 0 0 0 0 0...
output:
? 1 2 ? 3 4 ? 1 3 ? 2 3 ? 1 2 ? 2 3 ? 5 6 ? 7 8 ? 5 7 ? 6 7 ? 5 6 ? 5 8 ? 6 8 ? 5 7 ? 6 7 ? 6 8 ? 7 8 ? 6 7 ? 1 7 ? 2 7 ? 1 6 ? 2 6 ? 1 5 ? 2 5 ? 1 4 ? 2 4 ? 1 6 ? 2 6 ? 1 5 ? 2 5 ? 1 8 ? 2 8 ? 1 7 ? 2 7 ? 2 8 ? 3 8 ? 2 7 ? 3 7 ? 3 8 ? 4 8 ? 3 7 ? 4 7 ? 9 10 ? 11 12 ? 10 11 ? 9 11 ? 10 11 ? 9 10 ? 9...
result:
wrong output format Unexpected end of file - int32 expected