제출 #573069

#제출 시각아이디문제언어결과실행 시간메모리
573069StrawHatWessArt Collections (BOI22_art)C++17
20 / 100
140 ms456 KiB
#include "art.h"

#include <bits/stdc++.h>
using namespace std;

typedef vector<int>vi; 
#define pb push_back
#define all(x) begin(x), end(x)
#define sz(x) (int)x.size()
#define FOR(i,a,b) for(int i=a; i<b; i++)


//------------------------------

const int MX=1e5; 

int N;

vi solve(vi vec){
	//for(int x: vec) cout << x << " "; cout << endl;

	int n=sz(vec); 
	if(n<=1) return vec; 

	int pi=vec[n-1]; 
	

	map<int,int>mp;
	vi q={pi};
	FOR(i,0,n-1) q.pb(vec[i]),mp[vec[i]]=1; 

	FOR(i,1,N+1) if(!mp.count(i) && i!=pi) q.pb(i); 

	int x=publish(q); 
	//cout << x << endl;


	//for(int x: q) cout << x << " "; cout << endl;


	vi l,r; 
	FOR(i,0,n-1){
		//if(i+1>=N) break; 
		assert(q[i]==pi); 
		swap(q[i],q[i+1]);

		int y=publish(q);
		//cout << y << endl;

		if(y>x) r.pb(q[i]); 
		else l.pb(q[i]); 

		x=y; 
	}

	/*for(int x: l) cout << x << " "; cout << endl;
	for(int x: r) cout << x << " "; cout << endl;*/

	l=solve(l); 
	r=solve(r); 

	vi ans=l; 
	ans.pb(pi); 
	for(int x: r) ans.pb(x); 

	//for(int x: ans) cout << x << " "; cout << endl;

	return ans; 
}

void solve(int N){
	::N=N; 
	vi vec(N); iota(all(vec),1);  
	vec=solve(vec);
	answer(vec); 
}

컴파일 시 표준 에러 (stderr) 메시지

interface.cpp: In function 'int publish(std::vector<int>)':
interface.cpp:20:17: warning: comparison of integer expressions of different signedness: 'std::vector<int>::size_type' {aka 'long unsigned int'} and 'int' [-Wsign-compare]
   20 |     if(v.size() != N) {
      |        ~~~~~~~~~^~~~
interface.cpp: In function 'void answer(std::vector<int>)':
interface.cpp:36:17: warning: comparison of integer expressions of different signedness: 'std::vector<int>::size_type' {aka 'long unsigned int'} and 'int' [-Wsign-compare]
   36 |     if(v.size() != N) {
      |        ~~~~~~~~~^~~~
#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...