제출 #1295197

#제출 시각아이디문제언어결과실행 시간메모리
1295197elotelo966Unscrambling a Messy Bug (IOI16_messy)C++20
100 / 100
2 ms588 KiB
#include "messy.h"
#include <bits/stdc++.h>
using namespace std;
 
//#define int long long
#define OYY LLONG_MAX
#define mod 1000000007
#define faster ios_base::sync_with_stdio(false);cin.tie(NULL);cout.tie(NULL);
#define FOR for(int i=1;i<=n;i++)
#define mid (start+end)/2
#define lim 100005
#define fi first
#define se second
#define pb push_back

typedef long double lo;

string s;

int dizi[lim];

//~ inline void add_element(string tut){
	//~ cout<<tut<<endl;
	//~ return ;
//~ }

//~ inline bool check_element(string tut){
	//~ cout<<tut<<endl;
	//~ bool x;cin>>x;
	//~ return x;
//~ }

inline void build(int start,int end){
	if(start==end)return ;
	for(int i=start;i<=end;i++){
		s[i]='0';
	}
	
	//cout<<start<<" "<<end<<" "<<s<<endl;
	
	for(int i=start;i<=mid;i++){
		s[i]='1';
		add_element(s);
		s[i]='0';
	}
	
	for(int i=start;i<=end;i++){
		s[i]='1';
	}
	build(start,mid),build(mid+1,end);
}

inline void dnq(int start,int end,vector<int> ol){
	if(start==end){
		dizi[start]=ol.back();
		return ;
	}
	vector<int> sol,sag;
	
	for(auto i:ol){
		s[i]='0';
	}
	
	for(auto i:ol){
		s[i]='1';
		int tut=check_element(s);
		if(tut)sol.pb(i);
		else sag.pb(i);
		s[i]='0';
	}
	
	for(auto i:ol){
		s[i]='1';
	}
	
	dnq(start,mid,sol),dnq(mid+1,end,sag);
}

vector<int> restore_permutation(int n, int w, int r) {
	vector<int> cev(n);
	FOR{
		s+="0";
	}
	build(0,n-1);
	
	compile_set();
	
	vector<int> bos;
	
	FOR{
		bos.pb(i-1);
	}
	
	dnq(0,n-1,bos);
	
	FOR{
		cev[dizi[i-1]]=i-1;
	}
	
    return cev;
}

//~ int main(){
	//~ faster
	//~ int n,w,r;
	//~ cin>>n>>w>>r;
	//~ vector<int> a=restore_permutation(n,w,r);
	
	//~ for(auto x:a){
		//~ cout<<x<<" ";
	//~ }
	
	//~ cout<<endl;
	
	//~ return 0;
//~ }

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

messy.h:1:9: warning: #pragma once in main file
    1 | #pragma once
      |         ^~~~
messy_c.h:1:9: warning: #pragma once in main file
    1 | #pragma once
      |         ^~~~
#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...