Cod sursa(job #779778)

Utilizator SteveStefan Eniceicu Steve Data 18 august 2012 18:49:35
Problema Fibo3 Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.1 kb
#include <fstream>

using namespace std;

int N, cnt;
long long x1, y1, x2, y2;
long long Fibo[76];

void Initializare () {
    long long Lmax = 1000000000;
    Lmax *= 1LL * 1000000;
    Fibo[0] = 1;
    Fibo[1] = 1;
    for (cnt = 1; Fibo[cnt] <= Lmax; cnt++)
    {
        Fibo[cnt + 1] = Fibo[cnt] + Fibo[cnt - 1];
    }
}

inline long long min (long long a, long long b) {
    if (a < b) return a;
    return b;
}

inline long long max (long long a, long long b) {
    if (a > b) return a;
    return b;
}

long long Business () {
    long long R = 0, aux;
    if (y2 < y1) aux = y2, y2 = y1, y1 = aux;
    if (x2 < x1) aux = x2, x2 = x1, x1 = aux;
    for (int i = 1; i <= cnt; i++)
    {
        R += max (0, min (y2, Fibo[i] - x1) - max (y1, Fibo[i] - x2) + 1);
    }
    return R;
}

int main () {
    ifstream fin ("fibo3.in");
    ofstream fout ("fibo3.out");
    fin >> N;
    Initializare ();
    for (int i = 0; i < N; i++)
    {
        fin >> x1 >> y1 >> x2 >> y2;
        fout << Business () << "\n";
    }
    fin.close ();
    fout.close ();
    return 0;
}