제출 #713788

#제출 시각아이디문제언어결과실행 시간메모리
713788victor_gao자동 인형 (IOI18_doll)C++17
53 / 100
113 ms22224 KiB
#include "doll.h" #include<bits/stdc++.h> using namespace std; vector<int>to[100015],g[100015]; vector<int>ans1,ans2,c; int n,m,now=0; int build(int num,int l,int r,int root){ if (l==r){ if (g[num][l]==-1) return -root; else return -g[num][l]; } int mid=(l+r)>>1,use=--now; use=abs(use); int p1=build(num,l,mid,root); ans1[use]=-p1; int p2=build(num,mid+1,r,root); ans2[use]=-p2; return use; } void create_circuit(int M, std::vector<int> A) { m=M; ans1.resize(400000); ans2.resize(400000); A.insert(A.begin(),0); A.push_back(0); n = A.size(); for (int i=0;i<n-1;i++){ to[A[i]].push_back(A[i+1]); } for (int i=0;i<=m;i++){ if (to[i].empty()) continue; int p=0; for (int j=0; ;j++){ if ((1LL<<j)>=(int)to[i].size()){ p=j; break; } } g[i].resize((1LL<<p),-1); for (int j=0;j<to[i].size();j++){ int idx=0; for (int k=0;k<p;k++){ if (j&(1LL<<k)) idx=(idx+(1LL<<(p-k-1))); } if (j==to[i].size()-1) g[i][(1LL<<p)-1]=to[i][j]; else g[i][idx]=to[i][j]; } } c.resize(m+1); for (int i=0;i<=m;i++){ if (g[i].empty()) c[i]=0; else if (g[i].size()==1) c[i]=g[i][0]; else c[i]=-build(i,0,g[i].size()-1,now-1); } now=abs(now); vector<int>X,Y; for (int i=1;i<=now;i++){ X.push_back(ans1[i]); } for (int i=1;i<=now;i++){ Y.push_back(ans2[i]); } answer(c, X, Y); }

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

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