|  | 
|  | 
| вернуться в форум | Why am i getting wrong answer? here is my scource program timus_p1031;const
 maxn=10000;
 maxk=1000000000;
 type
 tart=record
 cost:longint;
 poz:longint;
 end;
 ta=array[1..maxn]of tart;
 var
 l1,l2,l3,c1,c2,c3:longint;
 a:ta;
 n:longint;
 x,y:longint;
 
 procedure init_data;
 begin
 fillchar(a,sizeof(a),0);
 end;
 
 procedure Swap(var x,y:longint);
 var
 z:longint;
 begin
 z:=x;
 x:=y;
 y:=z;
 end;
 
 procedure read_data;
 var
 i:longint;
 begin
 readln(l1,l2,l3,c1,c2,c3);
 readln(n);
 readln(x,y);
 if x>y then
 Swap(x,y);
 for i:=2 to x-1 do
 readln;
 for i:=x to y do
 readln(a[i].poz);
 end;
 
 function TicketCost(st2,st1:longint):longint;
 begin
 TicketCost:=0;
 if st2-st1>l3 then
 exit;
 TicketCost:=c3;
 if st2-st1>l2 then
 exit;
 TicketCost:=c2;
 if st2-st1>l1 then
 exit;
 TicketCost:=c1;
 end;
 
 procedure TakeChiefestTicket(station:longint);
 var
 i:longint;
 d:longint;
 begin
 a[station].cost:=maxk+1;
 for i:=station-1 downto x do
 begin
 d:=TicketCost(a[station].poz,a[i].poz);
 if d=0 then
 break;
 if (d+a[i].cost)<a[station].cost then
 a[station].cost:=d+a[i].cost;
 end;
 if a[station].cost>maxk then
 a[station].cost:=maxk+1;
 end;
 
 procedure art_solve;
 var
 i:longint;
 begin
 for i:=x+1 to y do
 TakeChiefestTicket(i);
 end;
 
 procedure write_sol;
 begin
 writeln(a[y].cost);
 end;
 
 begin
 init_data;
 read_data;
 art_solve;
 write_sol;
 end.
 | 
 | 
|