Cod sursa(job #2027065)

Utilizator Bodo171Bogdan Pop Bodo171 Data 25 septembrie 2017 16:30:17
Problema Fibo3 Scor 30
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.99 kb
#include <iostream>
#include <fstream>
#include <string>
using namespace std;
long long F[105],l,r,X1,X2,Y1,Y2,ans,num;
int i,n,t,ch;
string s;
inline long long solve(long long A,long long B)
{
    if(A+B<F[i]) return 0;
    if(A<0||B<0) return 0;
    A=F[i]-A;if(A<0) A=0;
    if(F[i]<B) B=F[i];
    return (1LL*B-A+1);
}
long long getnum()
{
    num=0;
    while(s[ch]>='0'&&s[ch]<='9')
    {
        num=1LL*num*10+s[ch]-'0';
        ch++;
    }
    ch++;
    return num;
}
int main()
{
    ifstream f("fibo3.in");
    ofstream g("fibo3.out");
    f>>t;getline(f,s);
    F[1]=F[2]=1;n=92;
    for(i=3;i<=n;i++)
        F[i]=(1LL*F[i-1]+F[i-2]);
    for(int cnt=1;cnt<=t;cnt++)
    {
        getline(f,s);ch=0;
        X1=getnum();Y1=getnum();X2=getnum();Y2=getnum();ans=0;
        for(i=2;i<=n&&F[i]<=X2+Y2;i++)
        {
            ans+=1LL*(solve(X2,Y2)-solve(X2,Y1-1)-solve(X1-1,Y2)+solve(X1-1,Y1-1));
        }
        g<<ans<<'\n';
    }
    return 0;
}