제출 #1286070

#제출 시각아이디문제언어결과실행 시간메모리
1286070WH8Art Collections (BOI22_art)C++20
100 / 100
718 ms480 KiB
#include "art.h"
#include <bits/stdc++.h>
using namespace std;


void solve(int n) {
	vector<int> ans(n, 0);
    int p=0;
    vector<int> ord(n);
    iota(ord.begin(),ord.end(), 1);
    p=publish(ord);
    vector<bool> in(n+1, 0);
    for(int i=0;i<n-1;i++){
		for(int j=1;j<=n;j++){
			ord[(i+j)%n]=j;
		}
		int c=publish(ord);
		int delta=c-p;
		ans[n-i-1]=(n-delta+1)/2;
		//~ printf("p %d, c %d, del %d, ans %d\n", p,c,delta, ans[n-i-1]);
		//~ fflush(stdout);
		assert(in[ans[n-i-1]]==false);
		in[ans[n-i-1]]=true;
		p=c;
	}
	for(int i=1;i<=n;i++){
		if(!in[i]){
			ans[0]=i;
		}
	}
	assert(ans[0]!=0);
	
	vector<int> f(n);
	for(int i=0;i<n;i++){
		f[n-ans[i]]=i+1;
	}
    answer(f);
}
/*
5
5 3 2 1 4
*/
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...