# | Time | Username | Problem | Language | Result | Execution time | Memory |
---|---|---|---|---|---|---|---|
152900 | Segtree | 자동 인형 (IOI18_doll) | C++14 | 0 ms | 0 KiB |
This submission is migrated from previous version of oj.uz, which used different machine for grading. This submission may have different result if resubmitted.
//#include "doll.h"
#include<iostream>
#include<algorithm>
#include<vector>
using namespace std;
typedef long long ll;
#define mod 1000000007
ll tap(ll x){
ll t=2;
while(t<x)t*=2;
return t;
}
void create_circuit(int M,vector<int> A){
ll n=tap(A.size()+1); //cout<<"---"<<n<<endl;
vector<int> c(M+1),x(n-1),y(n-1);
c[0]=1,c[1]=-1;
for(int i=1;i<n;i++){
x[i-1]=-(i*2);
y[i-1]=-(i*2+1);
}
ll cnt=A.size();
for(int i=0;i<n/2;i++){
for(int j=0;j<2;j++){
if(cnt>0){
if(j==0)x[i+n/2-1]=1;
if(j==1)y[i+n/2-1]=1;
cnt--;
}
else{
if(j==0)x[i+n/2-1]=-1;
if(j==1)y[i+n/2-1]=-1;
}
}
}
y[n-2]=0;
/*
cout<<"C:";
for(int i=0;i<c.size();i++)cout<<c[i]<<" "; cout<<endl;
cout<<"X:"<<endl;
for(int i=0;i<x.size();i++)cout<<x[i]<<" "<<y[i]<<endl;*/
answer(c,x,y);
}
/*
int main(){
vector<int> A;
for(int i=0;i<7;i++)A.push_back(i);
create_circuit(1,A);
return 0;
}*/