All pastes #275570 Raw Edit

Unnamed

public text v1 · immutable
·published 2006-12-11 17:02 UTC
rendered paste body
{
TASK: VAIKAIV
LANG: PASCAL
}

program vvaikai;
  var vaikk, eilmax, newvaik, i, len, pos, zodziu, vvaikk, liek: integer;
  nend : boolean;
  failas: text;
  seka : array [1..25] of integer;
  eilute : array [1..50] of string;
  iskr : array [1..25] of boolean;
procedure ismesti (position : integer);
  var j, k: integer;
begin
  j := 1;
  k := 1;
  while (iskr[j] = true) or (k <> position) do
  begin
    if (iskr[j] <> true) then k := k + 1;
    j := j + 1;
  end;
  iskr[j] := true;
  liek := k;
end;
begin
  assign(failas, 'VAIKAI.IN');
  reset(failas);
  
  Read(failas, vaikk);
  Read(failas, eilmax);
  ReadLn(failas, newvaik);
  for i := 1 to vaikk do Read(failas, seka[i]);
  ReadLn(failas);
  for i := 1 to eilmax do ReadLn(failas, eilute[i]);
  { eiluciu zodziu skaicius }
  zodziu := 0;
  for i := 1 to eilmax do
  begin
    len := Length(eilute[i]);
    nend := false;
    for pos := 1 to len do
    begin
      if (eilute[i][pos] <> ' ') then begin nend := true; end;
      if (eilute[i][pos] = ' ') AND (nend = true) then begin
        nend := false;
        zodziu := zodziu +1;
      end;
    end;
    if (nend = true) then zodziu := zodziu + 1;
  end;
  close(failas);
  
  vvaikk := vaikk + 1;
  liek := 1;
  while (vvaikk <> 1) do
  begin
    pos := zodziu mod vvaikk;
    pos := pos + liek - 1;
    if (pos >= vvaikk) then pos := pos mod vvaikk;
    if (pos = 0) then pos := vvaikk;
    ismesti(pos);
    vvaikk := vvaikk - 1;
  end;
  pos := 0;
  for i := 1 to vaikk+1 do
  begin
    if (iskr[i] <> true) then pos := i;
  end;

  assign(failas, 'VAIKAI.OUT');
  rewrite(failas);
  for i := 1 to vaikk + 1 do
  begin
    if (i < pos) then write(failas,seka[i]);
    if (i = pos) then write(failas,newvaik);
    if (i > pos) then write(failas,seka[i-1]);
    if (i <> vaikk+1) then write(failas, ' ');
  end;
  close(failas);
end.