Cod sursa(job #2022430)

Utilizator giotoPopescu Ioan gioto Data 16 septembrie 2017 15:48:53
Problema Fibo3 Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.97 kb
#include <bits/stdc++.h>
using namespace std;

int n;
long long fib[100];
struct punct{
    long long x, y;
};
inline long long f(punct a, punct b){
    long long ans = 0;
    for(int i = 2; i <= 74 ; ++i){
        if(fib[i] >= min(a.x, b.x) + min(a.y, b.y) && fib[i] <= max(a.x, b.x) + max(a.y, b.y)){
            if(fib[i] <= min(a.x + b.y, a.y + b.x)) ans = ans + (fib[i] - (a.x + a.y) + 1);
            else if(fib[i] <= max(a.x + b.y, a.y + b.x)) ans = ans + min(b.y - a.y, b.x - a.x) + 1;
            else ans = ans + b.x + b.y - fib[i] + 1;
        }
    }
    return ans;
}
int main()
{
    freopen("fibo3.in", "r", stdin);
    freopen("fibo3.out", "w", stdout);
    fib[1] = fib[2] = 1;
    for(int i = 3; i <= 74 ; ++i)
        fib[i] = fib[i - 1] + fib[i - 2];
    scanf("%d", &n);
    punct a, b;
    for(int i = 1; i <= n ; ++i){
        scanf("%lld %lld %lld %lld", &a.x, &a.y, &b.x, &b.y);
        printf("%lld\n", f(a, b));
    }
    return 0;
}