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 1210. Kind Spirits

Why W. A. 5???? I cannot understand.++++++help please+++++++
Posted by Виктор Крупко 15 Apr 2005 17:45
var
   a:array[1..30,1..30,1..30] of integer;
   i,j,n,m,t:integer;
   otv:longint;
procedure profi(j1,i1:integer; sum:longint);
  var
  k:integer;
begin
  k:=1;
  if j1=n+1 then
   if sum<otv then otv:=sum
   else
  else
   while a[j1,i1,k]<>0 do
    begin
      profi(j1+1,k,sum+a[j1,i1,k]);
      inc(k);
    end;
end;
begin
   otv:=maxlongint;
   readln(n);
   for i:=1 to n do
   begin
    readln(m);
    for j:=1 to m do
      repeat
        read(t);
        if t=0 then readln
        else  read(a[i,t,j]);
      until t=0;
     if i<>n then readln;
   end;
  i:=1;
  while a[1,1,i]<>0 do
  begin
   profi(2,i,a[1,1,i]);
   inc(i);
  end;
  writeln(otv);
end.
help please
Posted by Виктор Крупко 16 Apr 2005 00:34
program de;
   var
   a:array[1..31,1..31,1..31] of integer;
   i,j,n,m,t:integer;
   otv:longint;
I have corrected the mistake but now TLE
Give me please idea as it is possible to reduce passes

procedure profi(j1,i1:integer; sum:longint);
  var
  k:integer;
begin
  if j1=n+1 then
   if sum<otv then otv:=sum
   else
  else
    for k:=1 to 31 do
    if (a[j1,i1,k]<>0) then
      profi(j1+1,k,sum+a[j1,i1,k]);
end;
begin
   otv:=maxlongint;
   readln(n);
   for i:=1 to n do
   begin
    readln(m);
    for j:=1 to m do
      repeat
        read(t);
        if t=0 then readln
        else  read(a[i,t,j]);
      until t=0;
     if i<>n then readln;
   end;
  i:=1;
  for i:=1 to 30 do
  IF a[1,1,i]<>0 THEN profi(2,i,a[1,1,i]);
  writeln(otv);
end.