Cod sursa(job #490607)

Utilizator lianaliana tucar liana Data 6 octombrie 2010 21:50:50
Problema Curcubeu Scor 50
Compilator fpc Status done
Runda Arhiva de probleme Marime 1.17 kb
program curcubeu;
var f, g:text;
    a, b, c, col, sar:array[0..1000005] of int64;
    inc, sf, j, i, n, jj, jjan:longint;

procedure intervale;
  begin
    for i:=2 to n-1 do
      begin
        a[i]:=(a[i-1]*i) mod n;
        b[i]:=(b[i-1]*i) mod n;
        c[i]:=(c[i-1]*i) mod n;
      end;
  end;

function max(q,w:longint):longint;
  begin
    if q>w then
      max:=q
     else
       max:=w;
  end;

procedure colorare;
  begin
    sf:=max(a[i],b[i]);
    inc:=a[i]+b[i]-max(a[i],b[i]);
    j:=inc;
    while j<=sf do
      begin
        jj:=j;
        while col[j]>0 do
          j:=sar[j]+1;
        while col[jj]>0 do
          begin
            jjan:=jj;
            jj:=sar[jj]+1;
            sar[jjan]:=j-1;
          end;
        if j<=sf then
          begin
            col[j]:=c[i];
            sar[j]:=sf;
          end;
        j:=j+1;
      end;
  end;

  begin
    assign(f,'curcubeu.in'); reset(f);
    assign(g,'curcubeu.out'); rewrite(g);
    readln(f,n,a[1],b[1],c[1]);
    intervale;
    for i:=n-1 downto 1 do
      colorare;
    for i:=1 to n-1 do
      writeln(g,col[i]);
    close(f);
    close(g);
  end.