Cod sursa(job #466121)

Utilizator lianaliana tucar liana Data 26 iunie 2010 10:45:14
Problema Fibo3 Scor 30
Compilator fpc Status done
Runda Stelele Informaticii 2010, gimnaziu si clasa a IX-a, Ziua 2 Marime 1.28 kb
program fibo;
var fin, g:text;
    v:array[1..100] of int64;
    rez, nf, f, n, x, y, sf, inc, sf1, sf2, inc2, inc1, x1, x2,y1, y2:int64;
    i, ii:longint;

function max(a,b:int64):int64;
   begin
     if a>b then
       max:=a
      else
        max:=b;
   end;

function min(a,b:int64):int64;
  begin
    if a<b then
      min:=a
     else
       min:=b;
  end;

procedure calculare;
  begin
    rez:=0;
    for i:=2 to nf do
      if v[i]>x2+y2 then
        break
       else
        if (x1+y1<=v[i]) and (v[i]<=x2+y2) then
          begin
            f:=v[i];
            inc1:=x1;
            sf1:=x2;
            inc2:=f-y2;
            sf2:=f-y1;
            inc:=max(inc1,inc2);
            sf:=min(sf1,sf2);
            if sf>=inc then
              rez:=rez+sf-inc+1
          end;
     writeln(g,rez);
  end;

  begin
    assign(fin,'fibo3.in'); reset(fin);
    assign(g,'fibo3.out'); rewrite(g);
    readln(fin,n);
    v[1]:=1;
    v[2]:=1;
    i:=3;
    while v[i-1]<2000000000000000 do
      begin
        v[i]:=v[i-2]+v[i-1];
{        writeln(v[i],' ',i);}
        i:=i+1;
      end;
    nf:=i;
    for ii:=1 to n do
      begin
        read(fin,x1,y1,x2,y2);
        calculare;
      end;
    close(fin);
    close(g);
  end.