QOJ.ac
QOJ
ID | Problem | Submitter | Result | Time | Memory | Language | File size | Submit time | Judge time |
---|---|---|---|---|---|---|---|---|---|
#291646 | #6303. Inversion | zzuqy | WA | 92ms | 6948kb | C++14 | 2.5kb | 2023-12-27 01:31:44 | 2023-12-27 01:31:45 |
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];
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 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)
{
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;
rep(1,n,i)a[i]=i;
random_shuffle(a+1,a+1+n);
random_shuffle(a+1,a+1+n);
random_shuffle(a+1,a+1+n);
random_shuffle(a+1,a+1+n);
CDQ(1,n);
rep(1,n,i)c[a[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: 3796kb
input:
3 0 0 1
output:
? 1 2 ? 1 3 ? 2 3 ! 2 3 1
result:
ok OK, guesses=3
Test #2:
score: -100
Wrong Answer
time: 92ms
memory: 6948kb
input:
1993 1 1 1 1 0 0 1 0 1 1 0 1 1 1 0 1 1 0 0 1 0 1 0 1 0 0 1 0 0 0 1 0 0 1 0 1 1 1 1 1 0 1 1 0 1 0 1 1 1 1 0 0 1 0 1 1 0 0 1 0 0 0 1 0 1 1 0 0 0 0 0 1 1 1 1 0 1 0 1 0 0 1 1 0 1 1 0 0 0 1 1 0 1 0 0 0 0 0 1 1 0 0 0 0 1 1 0 1 1 0 0 1 0 1 0 1 1 0 0 0 1 0 1 1 1 0 1 1 0 0 1 1 1 0 1 1 0 1 0 0 0 0 1 1 0 0 1 0...
output:
? 467 1642 ? 468 1642 ? 467 1641 ? 468 1641 ? 419 629 ? 420 629 ? 419 628 ? 420 628 ? 467 629 ? 468 629 ? 467 628 ? 468 628 ? 419 467 ? 420 467 ? 419 466 ? 420 466 ? 419 1642 ? 420 1642 ? 419 1641 ? 420 1641 ? 491 1692 ? 492 1692 ? 491 1691 ? 492 1691 ? 401 1470 ? 402 1470 ? 401 1469 ? 402 1469 ? 49...
result:
wrong output format Unexpected end of file - int32 expected