Cod sursa(job #2021025)

Utilizator andrei_diaconu11Andrei C. Diaconu andrei_diaconu11 Data 12 septembrie 2017 16:14:56
Problema Fibo3 Scor 15
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.05 kb
#include <bits/stdc++.h>

using namespace std;

ifstream fi ("fibo3.in");
ofstream fo ("fibo3.out");

long long fib[75];

int main()
{
    ios::sync_with_stdio(false);
    long long n, i, j, xin, xout, x1, x2, y1, y2, nr;
    fi >> n;
    fib[0] = fib[1] = 1;
    for(i = 2; i < 75; i++)
        fib[i] = fib[i - 1] + fib[i - 2];
    for(i = 0; i < n; i++){
        fi >> x1 >> y1 >> x2 >> y2;
        nr = 0;
        for(j = 1; j < 75; j++){
            xin = -1;
            if(x1 <= fib[j] - y1 && fib[j] - y1 <= x2)//sa intersecteze latura de jos
                xin = fib[j] - y1;
            else if(y1 <= fib[j] - x2 && y2 >= fib[j] - x2)//altfel,daca intersecteaza latura dreapta
                xin = x2;
            if(y1 <= fib[j] - x1 && fib[j] - x1 <= y2)//intersecteaza latura stanga
                xout = x1;
            else if(x1 <= fib[j] - y2 && fib[j] - y2 <= x2)
                xout = fib[j] - y2;
            if(xin != -1)
                nr += xin - xout + 1;
        }
        fo << nr << endl;
    }
    return 0;
}