Cod sursa(job #1992049)

Utilizator laurageorgescuLaura Georgescu laurageorgescu Data 19 iunie 2017 11:10:41
Problema Fibo3 Scor 30
Compilator cpp Status done
Runda Simulare 15b Marime 1.05 kb
#include <fstream>
#include <vector>

using namespace std;

ifstream fin ("fibo3.in"); ofstream fout ("fibo3.out");

typedef long long i64;

const i64 lim = 1e15 + 5;
const i64 inf = 1LL << 60;
vector< i64 > f;

int main() {
    f.push_back( 1 );

    i64 a = 1, b = 1;
    while (a + b <= lim) {
        i64 c = a + b;
        f.push_back( c );
        a = b; b = c;
    }

    int n;
    fin >> n;
    for (int i = 1; i <= n; ++ i) {
        i64 c, d;
        fin >> a >> b >> c >> d;

        i64 ans = 0;
        for (const auto &j : f) {
            if (c + d < j) break;

            if (a + b <= j) {
                i64 x, y;
                if (a <= j - b && j - b <= c) {
                    x = b;
                } else {
                    x = j - c;
                }

                if (a <= j - d && j - d <= c) {
                    y = d;
                } else {
                    y = j - a;
                }

                ans += y - x + 1;
            }
        }

        fout << ans << "\n";
    }

    fin.close();
    fout.close();
    return 0;
}