Submission #1143646

#TimeUsernameProblemLanguageResultExecution timeMemory
1143646owoovoMonster Game (JOI21_monster)C++20
0 / 100
20 ms420 KiB
#include "monster.h"
//#include "grader.cpp"
#include<bits/stdc++.h>
#define ll long long 
#define F first 
#define S second 
using namespace std;
vector<int> Solve(int N) {
	int n=N;
	vector<int> id(n);
	for(int i=0;i<n;i++)id[i]=i;
	auto mg=[&](auto MG,int l,int r){
		if(l==r)return;
		int m=(l+r)>>1;
		MG(MG,l,m);
		MG(MG,m+1,r);
		vector<int> nw;
		int lp=l,rp=m+1;
		while(lp!=m+1&&rp!=r+1){
			if(Query(id[lp],id[rp])){
				nw.push_back(id[rp]);
				rp++;
			}else{
				nw.push_back(id[lp]);
				lp++;
			}
		}
		while(lp!=m+1){
			nw.push_back(id[lp]);
			lp++;
		}
		while(rp!=r+1){
			nw.push_back(id[rp]);
			rp++;
		}
		for(int i=l;i<=r;i++){
			id[i]=nw[i-l];
		}
		return;
	};
	mg(mg,0,n-1);

	auto f4=[&](auto F4){
		pair<int,int> win[4]={};
		for(int i=0;i<4;i++){
			win[i].S=id[i];
			for(int j=i+1;j<4;j++){
				if(Query(id[i],id[j])){
					win[i].F++;
				}else{
					win[j].F++;
				}
			}
		}
		sort(&win[0],&win[4]);
		if(win[3].F==3){

		}
		if(Query(win[1].S,win[0].S))swap(win[0],win[1]);
		if(Query(win[3].S,win[2].S))swap(win[3],win[2]);
		for(int i=0;i<4;i++){
			id[i]=win[i].S;
		}
	};
	f4(f4);





	vector<int> ans(n);
	for(int i=0;i<n;i++){
		ans[id[i]]=i;
	}
	// for(auto x:id){
	// 	cout<<x<<" ";
	// }
	// cout<<"\n";
	// for(auto x:ans){
	// 	cout<<x<<" ";
	// }

	return ans;
}
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...