Cod sursa(job #466117)

Utilizator eudanipEugenie Daniel Posdarascu eudanip Data 26 iunie 2010 10:30:15
Problema Fibo3 Scor 100
Compilator cpp Status done
Runda Stelele Informaticii 2010, gimnaziu si clasa a IX-a, Ziua 2 Marime 0.94 kb
#include<stdio.h>
#define ll long long

int n,u;
ll x1,x2,y1,y2,sol,a,b,smax;
ll yl1,yl2,s1,s2,f[150];

ll maxim(const ll& a,const ll& b)
{
    if(a>b)
        return a;
    return b;
}

ll minim(const ll& a,const ll& b)
{
    if(a<b)
        return a;
    return b;
}

int main ()
{
    int i,j;
    freopen("fibo3.in","r",stdin);
    freopen("fibo3.out","w",stdout);
    scanf("%d",&n);
    f[0]=1;
    f[1]=1;
    ll a=100000000,b=10000000;smax=a*b;
    for(i=2;f[i-1]<=2*smax;i++)
        f[i]=f[i-2]+f[i-1];
    u=i-1;
    for(i=1;i<=n;i++)
    {
        scanf("%lld%lld%lld%lld",&x1,&y1,&x2,&y2);
        s1=x1+y1;
        s2=x2+y2;
        for(j=1;j<=u && f[j]<=s2;j++)
            if(f[j]>=s1)
            {
                yl1=f[j]-x2;
                yl2=f[j]-x1;
                yl1=maxim(yl1,y1);
                yl2=minim(yl2,y2);
                sol+=yl2-yl1+1;
            }
        printf("%lld\n",sol);
        sol=0;
    }
    return 0;
}