Cod sursa(job #466461)

Utilizator SpiderManSimoiu Robert SpiderMan Data 26 iunie 2010 17:58:46
Problema Fibo3 Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.08 kb
# include <cstdio>

typedef long long ll;
const char FIN[] = "fibo3.in", FOU[] = "fibo3.out" ;

int T;
ll fib [ 75 ] = { 1, 2 } ;

inline ll min ( ll A, ll B )
{
    return ( A < B ) ? A : B ;
}

inline ll max ( ll A, ll B )
{
    return ( A > B ) ? A : B ;
}

void solve ()
{
    ll x_i, x_s, y_i, y_s, rez = 0;

    scanf ( "%lld %lld %lld %lld", &x_i, &y_i, &x_s, &y_s ) ;

    for (int i = 0; x_s + y_s >= fib[i] && i < 73 ; ++i)
        if ( x_i + y_i <= fib[i] )
            if ( fib[i] < min ( x_i + y_s, x_s + y_i ) )
                rez += fib[i] - x_i - y_i , ++rez ;

            else if ( fib[i] > max ( x_i + y_s, x_s + y_i ) )
                rez += x_s + y_s - fib[i] , ++rez ;

            else
                rez += min ( x_s - x_i, y_s - y_i ), ++rez ;

    printf ( "%lld\n", rez ) ;
}

int main()
{
    freopen ( FIN, "r", stdin ) ;
    freopen ( FOU, "w", stdout ) ;

    for (int i = 2; i < 73 ; ++i)
        fib[ i ] = fib[ i - 1 ] + fib[ i - 2 ] ;

    for ( scanf ( "%d", &T ) ; T ; --T )
        solve () ;

    return 0;
}