제출 #152915

#제출 시각아이디문제언어결과실행 시간메모리
152915SegtreeMechanical Doll (IOI18_doll)C++14
53 / 100
188 ms17020 KiB
#include "doll.h" #include<iostream> #include<algorithm> #include<vector> #include<math.h> 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; //n=2; 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<to.size()-1;i++){ vector<bool> v; ll cop=i; for(int j=0;j<log2(n);j++){ v.push_back(cop&1); cop>>=1; } reverse(v.begin(),v.end()); ll ra=1,res=n; for(int j=0;j<v.size();j++){ res+=v[j]*ra; ra*=2; } if(res%2==0)x[base+res/2-1]=to[p]; if(res%2==1)y[base+res/2-1]=to[p]; p++; } y[base+n-2]=to[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:18: warning: comparison of integer expressions of different signedness: 'int' and 'std::vector<int>::size_type' {aka 'long unsigned int'} [-Wsign-compare]
   33 |     for(int i=0;i<to.size()-1;i++){
      |                 ~^~~~~~~~~~~~
doll.cpp:42:15: warning: comparison of integer expressions of different signedness: 'int' and 'std::vector<bool>::size_type' {aka 'long unsigned int'} [-Wsign-compare]
   42 |  for(int j=0;j<v.size();j++){
      |              ~^~~~~~~~~
doll.cpp: In function 'void create_circuit(int, std::vector<int>)':
doll.cpp:56:18: warning: comparison of integer expressions of different signedness: 'int' and 'std::vector<int>::size_type' {aka 'long unsigned int'} [-Wsign-compare]
   56 |     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...