제출 #1286828

#제출 시각아이디문제언어결과실행 시간메모리
1286828m.zeeshanrashid자동 인형 (IOI18_doll)C++20
37 / 100
43 ms10516 KiB
#include "doll.h"
#include <bits/stdc++.h>

using namespace std;

#define elif else if
#define all(l) begin(l),end(l)
#define rall(l) rbegin(l),rend(l)
#define append push_back
#define print(l) for(auto i:l) cout<<i<<' '; cout<<endl;
#define pprint(a,b) cout<<a<<' '<<b<<endl;
#define inp(l) for(auto &i:l) cin>>i;
#define ordered_set tree<int, null_type,less<int>, rb_tree_tag,tree_order_statistics_node_update>
#define pai make_pair
#define endl "\n"
#define pii pair<int,int>
#define fi first
#define se second
#define vec vector

vec<int>ord(int n){
	if(n==1) return {0};
	vec<int>ans;
	for(auto i:ord(n/2)){
		ans.append(i);
		ans.append(i+n/2);
	}
	return ans;
}

void create_circuit(int m, std::vector<int> a) {
	a.append(0);
	int n=a.size();
	if(n==1){
		vec<int>x,y;
		vec<int>c(m+1,0);
		c[0]=a[0];
		answer(c,x,y);
		return;
	}
	int p=1;
	while(p<n) p*=2;
	p>>=1;
	vec<int>c(m+1,-1),x(p,-1e8),y(p,-1e8);
	vec<int>o=ord(p*2);
	// print(o)
	// for(int i=0;i<n;i++){
		// if(o[i]%2==0) x[o[i]/2]=a[i];
		// else y[o[i]/2]=a[i];
	// }
	for(int i=0;i<n-1;i++){
		if(o[i]%2==0) x[o[i]/2]=a[i];
		else y[o[i]/2]=a[i];
	}
	for(int i=0;i<p;i++){
		if(x[i]<-p){
			// x[i]=-i-p;
			// y[i]=-1;
			x[i]=-1;
		}
		elif(y[i]<-p){
			// y[i]=x[i];
			// x[i]=-i-p;
			y[i]=-1;
		}
	}
	y[y.size()-1]=0;
	vec<int>x1(p-1),y1(p-1);
	for(int i=0;i<p-1;i++) x1[i]=-(i+1)*2;
	for(int i=0;i<p-1;i++) y1[i]=x1[i]-1;
	for(int i=0;i<p;i++){
		x1.append(x[i]);
		y1.append(y[i]);
	}
	// for(int i=0;i<x1.size();i++){
		// cout<<x1[i]<<' '<<y1[i]<<endl;
	// }
	answer(c,x1,y1);
}
#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...