제출 #140240

#제출 시각아이디문제언어결과실행 시간메모리
140240bazsi700자동 인형 (IOI18_doll)C++14
0 / 100
2 ms332 KiB
#include <bits/stdc++.h>
#include "doll.h"
using namespace std;

#define MOD 1000000007
#define ll long long int
#define vi vector<int>
#define vii vector< vector<int> >
#define PI 3.1415926535897932384626433832795
#define INF 9223372036854775807LL
#define hashA 1257958787
#define hashB 1539500609
#define endl "\n"

bool was[1000005];

vector<pair<int,int> > getorder(int cn) {
	//cout << "a" << endl;
	vector<pair<int,int> > ord;
	ord.push_back({0,0});
	cn/=2;
	while(cn) {
		int n = ord.size();
		//cout << n << endl;
		for(int i = 0; i < n; i++) {
			ord.push_back({ord[i].first+cn,0});
		}
		//cout << cn << endl;
		cn/=2;
	}
	for(int i = 0; i < cn; i++) {
		ord.push_back({ord[i].first,1});
	}
	return ord;
}

void create_circuit(int m, std::vector<int> A) {
	//cout << "a" << endl;
	vector<int> C(m+1,-1);
	int n = A.size();
	int cn = 1;
	int ends = 1;
	while(2*ends < n+1) {
		cn*=2;
		cn++;
		ends*= 2;
	}
	vector<int> X (cn);
	vector<int> Y (cn);
	for(int i = 0; (i+1)*2 < cn; i++) {
		X[i] = -(i*2+2);
		Y[i] = -(i*2+3);
	}
	int ind = 0;
	//cout << "a" << endl;
	vector<pair<int,int> > ord = getorder(ends);
	//cout << "a" << endl;
	//cout << ends << " " << ord.size() << endl;
	for(int i = 0; i < 2*ends; i++) {
	//	cout << ord[i].first << endl;
		if(ord[i].second == 0) {
			if(ind < n) {
				X[ord[i].first+cn/2] = A[ind++];
			} else {
				X[ord[i].first+cn/2] = -1;
			}
		} else {
			if(ind < n) {
				Y[ord[i].first+cn/2] = A[ind++];
			} else {
				Y[ord[i].first+cn/2] = -1;
			}
		}
	}
	Y[cn-1] = 0;
	/*for(int i = 0; i < cn; i++) {
		cout << X[i] << " " << Y[i] << endl;
	}*/
	answer(C,X,Y);
}
#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...