QOJ.ac

QOJ

IDProblemSubmitterResultTimeMemoryLanguageFile sizeSubmit timeJudge time
#383894#1813. Joy with PermutationsCrysflyWA 1ms3756kbC++171.7kb2024-04-09 18:35:492024-04-09 18:57:23

Judging History

你现在查看的是最新测评结果

  • [2024-04-09 18:57:23]
  • 管理员手动重测本题所有提交记录
  • 测评结果:WA
  • 用时:1ms
  • 内存:3756kb
  • [2024-04-09 18:35:50]
  • 评测
  • 测评结果:0
  • 用时:0ms
  • 内存:3768kb
  • [2024-04-09 18:35:49]
  • 提交

answer

// what is matter? never mind. 
//#pragma GCC optimize("Ofast")
//#pragma GCC optimize("unroll-loops")
//#pragma GCC target("sse,sse2,sse3,sse4,popcnt,abm,mmx,avx,avx2") 
#include<bits/stdc++.h>
#define For(i,a,b) for(int i=(a);i<=(b);++i)
#define Rep(i,a,b) for(int i=(a);i>=(b);--i)
#define ll long long
//#define int long long
#define ull unsigned long long
#define SZ(x) ((int)((x).size()))
#define ALL(x) (x).begin(),(x).end()
using namespace std;
inline int read()
{
    char c=getchar();int x=0;bool f=0;
    for(;!isdigit(c);c=getchar())f^=!(c^45);
    for(;isdigit(c);c=getchar())x=(x<<1)+(x<<3)+(c^48);
    if(f)x=-x;return x;
}

#define fi first
#define se second
#define pb push_back
#define mkp make_pair
typedef pair<int,int>pii;
typedef vector<int>vi;

#define maxn 2000005
#define inf 0x3f3f3f3f

int n,res[maxn];
vi p,q;

int Q(vi o){
	cout<<"? "<<1<<" ";
	for(int x:o)cout<<x<<" ";
	cout<<endl;
	int x;cin>>x;return x;
}

signed main()
{
	cin>>n;
	vi w={Q({1,2,3}),Q({0,2,3}),Q({0,1,3}),Q({0,1,2})};
	vi p={0,1,2,3};
	sort(ALL(p),[&](int x,int y){return w[x]>w[y];});
	int a,b,c,d,l,r;
	// [a,b]=(l),[c,d]=(r)
	a=p[0],b=p[1],c=p[2],d=p[3];
	r=w[a],l=w[d];
	For(i,4,n){
		int x=Q({a,c,i});
		if(x>l && x<r) {
			res[i]=x;
			continue;
		}
		if(x<=l){
			if(x<l) res[b]=l,l=x,b=i;
			else res[a]=l,a=i,l=Q({a,b,c});
		}else{
			if(x>r) res[d]=r,r=x,d=i;
			else res[c]=l,c=i,r=Q({a,c,d});
		}
	}
	cout<<"? "<<2<<" "<<a<<" "<<b<<endl;
	int x;cin>>x;
	if(x==a) res[a]=1,res[b]=2;
	else res[a]=2,res[b]=1;
	cout<<"? "<<2<<" "<<c<<" "<<d<<endl;
	cin>>x;
	if(x==c) res[c]=n-1,res[d]=n;
	else res[c]=n,res[d]=n-1;
	cout<<"! ";For(i,1,n)cout<<res[i]<<" "; cout<<endl;
	return 0;
}
/*
1 2 3
*/

Details

Tip: Click on the bar to expand more detailed information

Test #1:

score: 0
Wrong Answer
time: 1ms
memory: 3756kb

input:

5
4

output:

? 1 1 2 3 
? 1 0 2 3 

result:

wrong answer Integer 0 violates the range [1, 5]