ENG  RUSTimus Online Judge
Online Judge
Problems
Authors
Online contests
About Online Judge
Frequently asked questions
Site news
Webboard
Links
Problem set
Submit solution
Judge status
Guide
Register
Update your info
Authors ranklist
Current contest
Scheduled contests
Past contests
Rules
back to board

Discussion of Problem 1030. Titanic

I got "Crash (ACCESS_VIOLATION)". What does it mean?
Posted by XiaoTian 18 Jan 2003 19:42
{No.1030 Titanic.}
Const
     pi=3.1415926535897932384626433832795;
Var
     Char1,NS1,EW1,NS2,EW2:Char;
     A1,B1,C1,D1,E1,F1,A2,B2,C2,D2,E2,F2:Integer;
     SqrD,Alpha,L,X1,Y1,Z1,X2,Y2,Z2:Real;
Function ReadNum:Integer;
Var
     Str1:String;
     Code,Num:Integer;
     Char1:Char;
Begin
     Str1:='##';
     Read(Str1[1]); Read(Str1[2]);
     Read(Char1);
     If Char1 In ['0'..'9'] Then
          Str1:=Str1+Char1;
     Val(Str1,Num,Code);
     ReadNum:=Num;
End;
Procedure Cal(Theta1,Theta2:Real;NS,EW:Char;Var X,Y,Z:Real);
Begin
     If NS='N' Then
          Z:=Sin(Theta1)
     Else Z:=-Sin(Theta1);
     X:=Cos(Theta2)*Cos(Theta1);
     If EW='E' Then
          Y:=Sin(Theta2)*Cos(Theta1)
     Else Y:=-Sin(Theta2)*Cos(Theta1);
End;
Begin
     ReadLn;
     ReadLn;
     ReadLn;

     A1:=ReadNum;
     B1:=ReadNum;
     C1:=ReadNum;
     Read(Char1);
     Read(NS1);
     ReadLn;

     Read(Char1); Read(Char1); Read(Char1); Read(Char1);
     D1:=ReadNum;
     E1:=ReadNum;
     F1:=ReadNum;
     Read(Char1);
     Read(EW1);
     ReadLn;

     ReadLn;

     A2:=ReadNum;
     B2:=ReadNum;
     C2:=ReadNum;
     Read(Char1);
     Read(NS2);
     ReadLn;

     Read(Char1); Read(Char1); Read(Char1); Read(Char1);
     D2:=ReadNum;
     E2:=ReadNum;
     F2:=ReadNum;
     Read(Char1);
     Read(EW2);
     ReadLn;
     ReadLn;

     Cal((((C1/60)+B1)/60+A1)/180*pi,(((F1/60)
+E1)/60+D1)/180*pi,NS1,EW1,X1,Y1,Z1);
     Cal((((C2/60)+B2)/60+A2)/180*pi,(((F2/60)
+E2)/60+D2)/180*pi,NS2,EW2,X2,Y2,Z2);

     If (Abs(X1+X2)<1E-7) And (Abs(Y1+Y2)<1E-7) And (Abs(Z1+Z2)<1E-7)
Then
          Alpha:=pi
     Else Begin
          SqrD:=Sqr(X1-X2)+Sqr(Y1-Y2)+Sqr(Z1-Z2);
          Alpha:=Arctan(Sqrt(SqrD)/2/Sqrt(1-SqrD/4))*2;
     End;
     L:=Alpha*6875/2;
     WriteLn('The distance to the iceberg: ',L:0:2,' miles.');
     If 100-L>1E-7 Then
          WriteLn('DANGER!');
End.
Re: I got "Crash (ACCESS_VIOLATION)". What does it mean?
Posted by Илья Гофман (Ilya Gofman) 18 Jan 2003 19:46
This possibly mean that you try to access the element of the array
with the number that doesn't exist or something like that.
  Good Luck!!!
I correct it, but now WA. Why?
Posted by XiaoTian 19 Jan 2003 09:08
{No.1030 Titanic.}
{$N+}
Const
     pi=3.1415926535897932384626433832795;
Var
     Char1,NS1,EW1,NS2,EW2:Char;
     A1,B1,C1,D1,E1,F1,A2,B2,C2,D2,E2,F2:Integer;
     SqrD,Alpha,L,X1,Y1,Z1,X2,Y2,Z2:Double;
Function ReadNum:Integer;
Var
     Str1:String;
     Code,Num:Integer;
     Char1:Char;
Begin
     Str1:='';
     Read(Char1); Str1:=Str1+Char1;
     Read(Char1);
     If Char1 In ['0'..'9'] Then
     Begin
          Str1:=Str1+Char1;
          Read(Char1);
          If Char1 In ['0'..'9'] Then
               Str1:=Str1+Char1;
     End;
     Val(Str1,Num,Code);
     ReadNum:=Num;
End;
Procedure Cal(Theta1,Theta2:Double;NS,EW:Char;Var X,Y,Z:Double);
Begin
     If NS='N' Then
          Z:=Sin(Theta1)
     Else Z:=-Sin(Theta1);
     X:=Cos(Theta2)*Cos(Theta1);
     If EW='E' Then
          Y:=Sin(Theta2)*Cos(Theta1)
     Else Y:=-Sin(Theta2)*Cos(Theta1);
End;
Begin
     ReadLn;
     ReadLn;
     ReadLn;

     A1:=ReadNum;
     B1:=ReadNum;
     C1:=ReadNum;
     Read(Char1);
     Read(NS1);
     ReadLn;

     Read(Char1); Read(Char1); Read(Char1); Read(Char1);
     D1:=ReadNum;
     E1:=ReadNum;
     F1:=ReadNum;
     Read(Char1);
     Read(EW1);
     ReadLn;

     ReadLn;

     A2:=ReadNum;
     B2:=ReadNum;
     C2:=ReadNum;
     Read(Char1);
     Read(NS2);
     ReadLn;

     Read(Char1); Read(Char1); Read(Char1); Read(Char1);
     D2:=ReadNum;
     E2:=ReadNum;
     F2:=ReadNum;
     Read(Char1);
     Read(EW2);
     ReadLn;
     ReadLn;

     Cal((((C1/60)+B1)/60+A1)/180*pi,(((F1/60)
+E1)/60+D1)/180*pi,NS1,EW1,X1,Y1,Z1);
     Cal((((C2/60)+B2)/60+A2)/180*pi,(((F2/60)
+E2)/60+D2)/180*pi,NS2,EW2,X2,Y2,Z2);

     If (Abs(X1+X2)<1E-10) And (Abs(Y1+Y2)<1E-10) And (Abs(Z1+Z2)<1E-
10) Then
          Alpha:=pi
     Else Begin
          SqrD:=Sqr(X1-X2)+Sqr(Y1-Y2)+Sqr(Z1-Z2);
          Alpha:=Arctan(Sqrt(SqrD)/2/Sqrt(1-SqrD/4))*2;
     End;
     L:=Alpha*6875/2;
     WriteLn('The distance to the iceberg: ',L:0:2,' miles.');
     If 100-L>0 Then
          WriteLn('DANGER!');
End.
You see, in your program such case is possible: when you write distance 100.00, but write DANGER! Round error (-)
Posted by Dmitry 'Diman_YES' Kovalioff 19 Jan 2003 12:01
Error corrected, but I still got WA.
Posted by XiaoTian 19 Jan 2003 14:31
{No.1030 Titanic.}
{$N+}
Const
     pi=3.1415926535897932384626433832795;
Var
     Char1,NS1,EW1,NS2,EW2:Char;
     A1,B1,C1,D1,E1,F1,A2,B2,C2,D2,E2,F2:Integer;
     SqrD,Alpha,L,X1,Y1,Z1,X2,Y2,Z2:Double;
Function ReadNum:Integer;
Var
     Str1:String;
     Code,Num:Integer;
     Char1:Char;
Begin
     Str1:='';
     Read(Char1); Str1:=Str1+Char1;
     Read(Char1);
     If Char1 In ['0'..'9'] Then
     Begin
          Str1:=Str1+Char1;
          Read(Char1);
          If Char1 In ['0'..'9'] Then
               Str1:=Str1+Char1;
     End;
     Val(Str1,Num,Code);
     ReadNum:=Num;
End;
Procedure Cal(Theta1,Theta2:Double;NS,EW:Char;Var X,Y,Z:Double);
Begin
     If NS='N' Then
          Z:=Sin(Theta1)
     Else Z:=-Sin(Theta1);
     X:=Cos(Theta2)*Cos(Theta1);
     If EW='E' Then
          Y:=Sin(Theta2)*Cos(Theta1)
     Else Y:=-Sin(Theta2)*Cos(Theta1);
End;
Begin
     ReadLn;
     ReadLn;
     ReadLn;

     A1:=ReadNum;
     B1:=ReadNum;
     C1:=ReadNum;
     Read(Char1);
     Read(NS1);
     ReadLn;

     Read(Char1); Read(Char1); Read(Char1); Read(Char1);
     D1:=ReadNum;
     E1:=ReadNum;
     F1:=ReadNum;
     Read(Char1);
     Read(EW1);
     ReadLn;

     ReadLn;

     A2:=ReadNum;
     B2:=ReadNum;
     C2:=ReadNum;
     Read(Char1);
     Read(NS2);
     ReadLn;

     Read(Char1); Read(Char1); Read(Char1); Read(Char1);
     D2:=ReadNum;
     E2:=ReadNum;
     F2:=ReadNum;
     Read(Char1);
     Read(EW2);
     ReadLn;
     ReadLn;

     Cal((((C1/60)+B1)/60+A1)/180*pi,(((F1/60)
+E1)/60+D1)/180*pi,NS1,EW1,X1,Y1,Z1);
     Cal((((C2/60)+B2)/60+A2)/180*pi,(((F2/60)
+E2)/60+D2)/180*pi,NS2,EW2,X2,Y2,Z2);

     If (Abs(X1+X2)<1E-10) And (Abs(Y1+Y2)<1E-10) And (Abs(Z1+Z2)<1E-
10) Then
          Alpha:=pi
     Else Begin
          SqrD:=Sqr(X1-X2)+Sqr(Y1-Y2)+Sqr(Z1-Z2);
          Alpha:=Arctan(Sqrt(SqrD)/2/Sqrt(1-SqrD/4))*2;
     End;
     L:=Alpha*6875/2;
     Write('The distance to the iceberg: ');
     Write(L:0:2);
     WriteLn(' miles.');
     If Round(L*100)<10000 Then
          WriteLn('DANGER!');
End.
Maybe such case is possible: many messages in one test (-)
Posted by Dmitry 'Diman_YES' Kovalioff 19 Jan 2003 21:24
All the tests are here.I got them from Zhu Zheyuan.
Posted by Lin 21 Jan 2003 10:51
Message #488.
Received at 18:15:23.
Current ship's coordinates are
45^00'00" SL
and 45^00'00" WL.
An iceberg was noticed at
45^00'00" NL
and 45^00'00" WL.
===
Message #488.
Received at 18:15:23.
Current ship's coordinates are
41^46'00" NL
and 50^14'00" WL.
An iceberg was noticed at
41^14'11" NL
and 51^09'00" WL.
===
Message #488.
Received at 18:15:23.
Current ship's coordinates are
45^00'00" SL
and 45^00'00" WL.
An iceberg was noticed at
45^00'00" NL
and 135^00'00" EL.
===
Message #488.
Received at 18:15:23.
Current ship's coordinates are
90^00'00" NL
and 50^14'00" WL.
An iceberg was noticed at
90^00'00" SL
and 151^09'00" WL.
===
Message #488.
Received at 18:15:23.
Current ship's coordinates are
0^00'00" NL
and 50^00'00" WL.
An iceberg was noticed at
0^00'00" SL
and 130^00'00" EL.
===
Message #488.
Received at 18:15:23.
Current ship's coordinates are
40^00'00" NL
and 1^00'00" WL.
An iceberg was noticed at
40^00'00" NL
and 1^00'00" EL.
===
Message #488.
Received at 18:15:23.
Current ship's coordinates are
40^09'18" NL
and 1^00'01" WL.
An iceberg was noticed at
40^50'11" NL
and 1^00'00" EL.
===
Message #488.
Received at 18:15:23.
Current ship's coordinates are
40^09'19" NL
and 1^00'01" WL.
An iceberg was noticed at
40^50'12" NL
and 1^00'00" EL.
===
Is my answer right?
Posted by XiaoTian 22 Jan 2003 14:22
The distance to the iceberg: 5399.61 miles.
The distance to the iceberg: 52.04 miles.
DANGER!
The distance to the iceberg: 7199.48 miles.
The distance to the iceberg: 10799.22 miles.
The distance to the iceberg: 4799.66 miles.
The distance to the iceberg: 91.92 miles.
DANGER!
The distance to the iceberg: 100.00 miles.
The distance to the iceberg: 99.99 miles.
DANGER!
Re: Is my answer right?
Posted by Sergei Pupyrev (USU) 10 Feb 2003 19:58
> The distance to the iceberg: 5399.61 miles.
> The distance to the iceberg: 52.04 miles.
> DANGER!
> The distance to the iceberg: 7199.48 miles.
> The distance to the iceberg: 10799.22 miles.
> The distance to the iceberg: 4799.66 miles.
> The distance to the iceberg: 91.92 miles.
> DANGER!
> The distance to the iceberg: 100.00 miles.
> The distance to the iceberg: 99.99 miles.
> DANGER!
>
Sorry
Posted by Sergei Pupyrev (USU) 10 Feb 2003 19:59
> The distance to the iceberg: 5399.61 miles.
> The distance to the iceberg: 52.04 miles.
> DANGER!
> The distance to the iceberg: 7199.48 miles.
> The distance to the iceberg: 10799.22 miles.
> The distance to the iceberg: 4799.66 miles.
> The distance to the iceberg: 91.92 miles.
> DANGER!
> The distance to the iceberg: 100.00 miles.
> The distance to the iceberg: 99.99 miles.
> DANGER!
>
Look carefully at test :
Message #488.
Received at 18:15:23.
Current ship's coordinates are
45^00'00" SL
and 45^00'00" WL.
An iceberg was noticed at
45^00'00" NL
and 135^00'00" EL.
===
My answer is 10799.22
Re: Sorry
Posted by alp 21 Sep 2013 23:55
AC program gives answers
The distance to the iceberg: 5399.61 miles.
The distance to the iceberg: 52.04 miles.
DANGER!
The distance to the iceberg: 10799.22 miles.
The distance to the iceberg: 10799.22 miles.
The distance to the iceberg: 10799.22 miles.
The distance to the iceberg: 91.92 miles.
DANGER!
The distance to the iceberg: 100.00 miles.
The distance to the iceberg: 99.99 miles.
DANGER!