Afişează mesaje
Pagini: [1]
1  infoarena - concursuri, probleme, evaluator, articole / Informatica / Răspuns: lacusta oji 2005 : Martie 01, 2013, 11:04:19
type matrice=array[1..255,1..255] of word;
var f,g: text;
     a,d:matrice;
    m,n,i,j: byte;
   max,min2,j_min: word;
 
procedure combin;
var i,j: byte;
begin
  for i:=1 to m-1 do
      for j:=1 to n do
          d[i,j] := a[i+1,j] + a[i,j];
  d[1,1] :=max;
end;
 
function get_l_min(i: byte): word;
var j: byte;
    min: word;
begin
  min := max;
  min2 := max;
  for j:=1 to n do
      if d[i,j] < min then
         begin
           min := d[i,j];
           j_min:= j;
         end;
 
  for j:=1 to n do
      if (d[i,j] < min2) and (j <> j_min) then
         min2 := d[i,j];
 
  get_l_min := min;
end;
 
procedure min;
var i,j: byte;
    l_min : word;
begin
 
  for i:=2 to m-1 do
      begin
        l_min := get_l_min(i-1);
        for j:=1 to n do
            if j <> j_min then
               d[i,j] := d[i,j] + l_min
            else
               d[i,j] := d[i,j] + min2;
      end;
  d[m-1,n] :=max;
 
end;
 
begin
  assign(f, 'lacusta.in');
  reset(f);
  assign(g, 'lacusta.out');
  rewrite(g);
  max:=65530;
  readln(f,m,n);
  for i:=1 to m do
      begin
        for j:=1 to n do
            read(f,a[i,j]);
        readln(f);
      end;
 
  combin;
  min;
 
 
 
     writeln(g,get_l_min(m-1)+a[1,1]+a[m,n]);
 
  close(f);
  close(g);
end.
solutia oficiala in pascal iei 100p cu ea
Pagini: [1]
Powered by SMF 1.1.19 | SMF © 2006-2013, Simple Machines