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 1133. Fibonacci Sequence

WA AGAIN!!! I'm sure in my code, BUT ....
Posted by Akshin Salimov 5 Jan 2006 20:05
var
  i,j,ii,n,imin,imax,fs,fo,sfs1,sfs2,sfo1,sfo2,xx:longint;
  a,b,c:longint;
  f:array[-1000..1000] of longint;

procedure readdata;
begin
  readln(i,f[i],j,f[j],n);
  if i=n then
  begin
    writeln(f[i]);
    halt;
  end;
  if j=n then
  begin
    writeln(f[j]);
    halt;
  end;
end;

begin
  readdata;
  if abs(j-i)>1 then
  begin
    if i<j then
    begin
      imin:=i;
      imax:=j;
    end else
    begin
      imin:=j;
      imax:=i;
    end;
    ii:=imin+2; fs:=0; fo:=0;
    sfs1:=1; sfs2:=0;
    sfo1:=0; sfo2:=1;

    while (ii<=imax) do
    begin
      fs:=sfs1+sfs2;
      sfs2:=sfs1;
      sfs1:=fs;
      fo:=sfo1+sfo2;
      sfo2:=sfo1;
      sfo1:=fo;
      inc(ii);
    end;
    fo:=fo*f[imin];
    xx:=(f[imax]-fo) div fs;
  end else xx:=f[imax];
  if n=imin+1 then
  begin
    writeln(xx);
    halt;
  end;
  a:=f[imin]; b:=xx;
  if n>imin then
  for ii:=imin+2 to n do
  begin
    c:=a+b;
    a:=b;
    b:=c;
  end else
  for ii:=imin-1 downto n do
  begin
    c:=b-a;
    b:=a;
    a:=c;
  end;
  writeln(c);
end.