what I have done here: a) i have calculated the dot product of the direction vectors of the centre of mass from origin and the velocity vector. this gives me the length of projection of the former on the latter - A b) i already know the distance of centre of mass from the origin - B c) so sqrt(B^2-A^2) gives me the distance of the centre of mass from the origin at its minimum value
But I am getting the answer wrong for half of the cases using this approach. I also tried the differentiation method and the output is correct from that algorithm. I just wanted to know what could possibly go wrong with my code above. On Sep 16, 11:00 pm, Seedrick <[email protected]> wrote: > Someone please tell me what is the problem in my code > > #define sq(a) ((a)*(a)) > #define ERR 1e-7 > int main() { > freopen("B-small-attempt11.in","r",stdin); > freopen("B-small-attempt11.out","w",stdout); > int tc,i,j,k,n,a,b,c,va,vb,vc; > double u[3],ap,dot,dmin,tmin,mod; > cin >> tc; > for(i=0;i<tc;i++) { > cin >> n; > vector<double> p(3,0.0); > vector<double> v(3,0.0); > for(j=0;j<n;j++) { > cin >> a >> b >> c >> va >> vb >> vc; > p[0]+=a; > p[1]+=b; > p[2]+=c; > v[0]+=va; > v[1]+=vb; > v[2]+=vc; > } > p[0]=p[0]/n; > p[1]=p[1]/n; > p[2]=p[2]/n; > > v[0]=v[0]/n; > v[1]=v[1]/n; > v[2]=v[2]/n; > > mod = sqrt ( sq(v[0])+sq(v[1])+sq(v[2]) ); > if(mod < ERR ) > { > mod=0.0; > dmin=sqrt (sq(p[0])+sq(p[1])+sq(p[2])); > if(dmin < ERR) > dmin =0.0 ; > printf("Case #%d: %.8lf %.8lf\n",i+1,dmin,mod); > continue; > } > u[0]=v[0]/mod; > u[1]=v[1]/mod; > u[2]=v[2]/mod; > ap=sq(p[0])+sq(p[1])+sq(p[2]); > dot=p[0]*u[0]+p[1]*u[1]+p[2]*u[2]; > if(fabs(dot) < ERR) > { > dmin = sqrt(ap); > tmin=0.0; > } > else > { > dmin= ap-sq(dot); > dmin = sqrt(dmin); > tmin = (fabs(dot))/mod; > } > printf("Case #%d: %.8lf %.8lf\n",i+1,dmin,tmin); > } > return 0; > > } --~--~---------~--~----~------------~-------~--~----~ You received this message because you are subscribed to the Google Groups "google-codejam" group. To post to this group, send email to [email protected] To unsubscribe from this group, send email to [email protected] For more options, visit this group at http://groups.google.com/group/google-code?hl=en -~----------~----~----~----~------~----~------~--~---
