Cod sursa(job #528316)

Utilizator klamathixMihai Calancea klamathix Data 2 februarie 2011 16:25:20
Problema Fibo3 Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.79 kb
#include<fstream>
#include<algorithm>
using namespace std;
ifstream fin("fibo3.in");
ofstream fout("fibo3.out");
const long long LIM = 10000000000000000LL;
#define ll long long

ll i , j , n , x , y , x2 , y2 , fib[90];

ll query ( ll x , ll y ) {
	ll ans = 0 , i;
	
	if ( x < 0 || y < 0 ) return 0;
	if ( x > y ) swap (x , y);
	for( i = 1 ; fib[i] <= x + y ; ++i ) {
		ll act = fib[i];
		ans += act + 1;
		if ( act > x ) ans -= act - x;
		if ( act > y ) ans -= act - y;
	}
	
return ans;
}

int main()
{
	for( fib[0] = fib[1] = 1 , i = 2 ; fib[i] <= LIM ; ++i ) 
		fib[i] = fib[i - 1] + fib[i - 2];
	
	fin >> n;
	for( ; n -- ; ) { 
		fin >> x >> y >> x2 >> y2;
		fout << query(x2,y2) - query(x2 , y - 1) - query(x - 1 ,y2) + query(x - 1, y - 1) <<"\n";
	}

return 0;
}