Cod sursa(job #2738200)

Utilizator stefantagaTaga Stefan stefantaga Data 5 aprilie 2021 15:56:56
Problema Fibo3 Scor 0
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 1.47 kb
#include <bits/stdc++.h>

using namespace std;
ifstream f("fibo3.in");
ofstream g("fibo3.out");
long long i,n,a,b,c,val[105],lim;
long long card (pair <long long ,long long> a,pair <long long ,long long> b)
{
     if (a.second<b.first)
     {
         return 0;
     }
     if (b.second<a.first)
     {
         return 0;
     }
     if (a.first<=b.first&&b.first<=a.second&&a.second<=b.second)
     {
         return a.second-b.first+1;
     }
     if (a.first<=b.first&&b.second<=a.second)
     {
         return b.second-b.first;
     }
     if (b.first<=a.first&&a.first<=b.second&&b.second<=a.second)
     {
         return b.second-a.first+1;
     }
     if (b.first<=a.first&&a.second<=b.second)
     {
         return a.second-a.first+1;
     }
     return 0;
}
long long x,y,x2,y2,sum,j;
int main()
{
    f>>n;
    a=1;
    b=1;
    val[1]=1;
    val[2]=1;
    for (i=1;i<=100;i++)
    {
        c=a+b;
        val[i+2]=c;
        if (c>2e15)
        {
            break;
        }
        a=b;
        b=c;
    }
    lim=74;
    for (i=1;i<=n;i++)
    {
        f>>x>>y>>x2>>y2;
        sum=0;
        for (j=2;j<=lim;j++)
        {
            if (x2+y2<val[j])
            {
                break;
            }
            pair <long long,long long> inter;
            inter.second=val[j]-x;
            inter.first=val[j]-x2;
            sum=sum+card(inter,{y,y2});
        }
        g<<sum<<'\n';
    }
    return 0;
}