제출 #1148448

#제출 시각아이디문제언어결과실행 시간메모리
1148448Kaztaev_Alisher자동 인형 (IOI18_doll)C++20
2 / 100
31 ms28744 KiB
#include "doll.h"
#include <bits/stdc++.h>

#define ios ios_base::sync_with_stdio(0); cin.tie(0); cout.tie(0)
#define file(s) if (fopen(s".in", "r")) freopen(s".in", "r", stdin), freopen(s".out", "w", stdout)
#define all(a) a.begin() , a.end()
#define F first
#define S second

using namespace std;
using ll = long long;

const ll N = 1e6+5 , inf = 2e9 + 7;
const ll INF = 1e18 ,   mod = 1e9+7;

int cur[N];
pair<int,int> p[N];
vector<int> g[N];
int nw = 1;
void build(int v, int tl , int tr , int k , int s , int V){
	if(tl == tr){
		cur[v] = -g[V][s];
		return;
	} else {
		cur[v] = nw++;
	}
	int tm = (tl+tr) >> 1;
	build(v*2,tl,tm,k+1,s,V);
	build(v*2+1,tm+1,tr,k+1,s+(1 << k),V);
	p[cur[v]] = {-cur[v*2] , -cur[v*2+1]};
}
void create_circuit(int M, vector<int> a) {
	int n = a.size();
	g[0].push_back(a[0]);
	for(int i = 0; i+1 < a.size(); i++) g[a[i]].push_back(a[i+1]);
	g[a.back()].push_back(0);
	vector<int> C(M + 1);
	vector<int> X, Y;
	for(int i = 0; i <= M; i++){
		if(g[i].size() == 0){
			C[i] = 0;
		} else if(g[i].size() == 1){
			C[i] = g[i][0];
		} else {
			C[i] = -nw;
			if(g[i].size()%2) {
				g[i].push_back(-nw);
				swap(g[i][g[i].size()-1],g[i][g[i].size()-2]);
			} 
			build(1,1,g[i].size(),0,0,i);	
		}
	}
	// for(int i = 1; i < nw; i++){
		// X.push_back(p[i].F);
		// Y.push_back(p[i].S);
	// }
	// for(int i = 0; i <= M; i++){
		// cout << i <<" " << C[i] <<" \n";
	// }
	// cout << "\n";
	// for(int i = 0; i < X.size(); i++){
		// cout << -(i+1) <<" " << X[i] <<" x\n"; 
		// cout << -(i+1) <<" " << Y[i] << " y\n";
	// }
	answer(C, X, Y);
}
// int main(){
	// int M;
	// cin >> M;
	// vector<int> a;
	// int n;
	// cin >> n;
	// for(int i = 0; i < n; i++){
		// a.push_back(0);
		// cin >> a.back();
	// }
	// create_circuit(M , a); 	
// }
#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...