제출 #152905

#제출 시각아이디문제언어결과실행 시간메모리
152905Segtree자동 인형 (IOI18_doll)C++14
2 / 100
81 ms8756 KiB
#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;
}
vector<int> c,x,y;
void func(ll cur,vector<int> to){
    if(to.size()==1){
	c[cur]=to[0];
	return;
    }
    ll n=tap(to.size()); //cout<<"---"<<n<<endl;
    int base=x.size();
    c[cur]=-base-1;
    for(int i=0;i<n-1;i++){
	x.push_back(-base-1);
	y.push_back(-base-1);
    }
    for(int i=1;i<n/2;i++){
	x[base+i-1]=-base-(i*2);
	y[base+i-1]=-base-(i*2+1);
    }
    ll p=0;
    for(int i=0;i<n/2;i++){
	for(int j=0;j<2;j++){
	    if(p<to.size()){
		if(j==0)x[base+i+n/2]=to[p];
		if(j==1)y[base+i+n/2]=to[p];
		p++;
	    }
	}
    }
}

vector<int> too[100010];
void create_circuit(int M,vector<int> A){
    ll bef=0;
    for(int i=0;i<A.size();i++){
	too[bef].push_back(A[i]);
	bef=A[i];
    }
    too[bef].push_back(0);
    for(int i=0;i<=M;i++){
	c.push_back(0);
	if(too[i].size()>0){
	    func(i,too[i]);
	}
    }
    /*
    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(4);
  for(int i=0;i<4;i++)cin>>A[i];
  
  create_circuit(4,A);
  return 0;
}*/

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

doll.cpp: In function 'void func(ll, std::vector<int>)':
doll.cpp:33:10: warning: comparison of integer expressions of different signedness: 'll' {aka 'long long int'} and 'std::vector<int>::size_type' {aka 'long unsigned int'} [-Wsign-compare]
   33 |      if(p<to.size()){
      |         ~^~~~~~~~~~
doll.cpp: In function 'void create_circuit(int, std::vector<int>)':
doll.cpp:45:18: warning: comparison of integer expressions of different signedness: 'int' and 'std::vector<int>::size_type' {aka 'long unsigned int'} [-Wsign-compare]
   45 |     for(int i=0;i<A.size();i++){
      |                 ~^~~~~~~~~
#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...