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 1304. Parallelepiped

The first sentance is :
Two opposite vertices of the parallelepiped A with the edges parallel to the datume lines, have coordinates (0, 0, 0) and (u, v, w) correspondingly .
What does the "parallel to the datume lines" mean ? what is datume lines ?
Maigo Akisame (maigoakisame@yahoo.com.cn) What does "datume" mean? And, two vertices don't determine a parallelepiped. [2] // Problem 1304. Parallelepiped 11 Oct 2004 20:51
Maigo Akisame (maigoakisame@yahoo.com.cn) I suppose it means 'datum lines', which refer to the coordinate axes. [1] // Problem 1304. Parallelepiped 28 Oct 2004 15:23
Everything me too.......... // Problem 1304. Parallelepiped 23 Apr 2005 08:09
as judged by russian text, "datume lines"
must means "axis of coordinates" ("axles of coordinates")

in another words:  (AB||oX)or(AB||oY)or(AB||oZ) - true
for any edge AB.
(AB||oX)or(AB||oY)or(AB||oZ)~(AB||{1;0;0})or(AB||{0;1;0})or(AB||{0;0;1})

|| - parallel

Edited by author 08.03.2006 14:01
i hate my provider plz help me. // Problem 1304. Parallelepiped 19 Mar 2006 21:08

WA5 many times.


Var X,Y,Z:Array[0..51]of DoubLe;
ii,jj,i,j,n:LongInt;
Ans,Ans1:DoubLe;


Procedure SWEP(Var a,b:DoubLe);
Var tmp:DoubLe;
Begin
tmp:=a;a:=b; b:=tmp;
End;

Procedure Crash;
Begin
i:=0;
i:=5 Div i;
End;


Procedure Go(x1,y1,x2,y2:DoubLe);
Var i:LongInt;
Last,S:DoubLe;
Begin
If x2<=x1 Then Crash;
If y2<=y1 Then Crash;

S:=(x2-x1)*(y2-y1);
If S*Z[n]<=Ans Then Exit;

Last:=0;
For i:=1 To N Do
 If (X[i]>x1)And(X[i]<x2)And(Y[i]>y1)And(Y[i]<y2) Then
  Begin
   If Ans<S*(Z[i]-Last) Then Ans:=S*(Z[i]-Last);
   Last:=Z[i];
   If S*(Z[n]-Last)<=Ans Then Exit;
  End;

If Ans<S*(Z[N]-Last) Then Ans:=S*(Z[N]-Last);
End;


Begin
ReadLn(X[0],Y[0],Z[0]);
ReadLn(N);
If n=0 Then Crash;
If N>50 Then Crash;
For i:=1 To N Do ReadLn(X[i],Y[i],Z[i]);

Inc(N);
X[n]:=0;Y[n]:=0;Z[n]:=0;

For i:=0 To N-1 Do
 For j:=i+1 To N Do
   If Z[i]>Z[j] Then
     Begin
      SWEP(X[i],X[j]);
      SWEP(Y[i],Y[j]);
      SWEP(Z[i],Z[j]);
     End;

Ans:=0;
For i:=0 To N Do
 For j:=0 To N Do
  For ii:=0 To N Do  If X[ii]>X[i] Then
    For jj:=0 To N Do
     If Y[jj]>Y[j] Then Go(X[i],Y[j],X[ii],Y[jj]);

Write(Ans:2:2);
End.


Please give hints or tests.