Cod sursa(job #464604)

Utilizator savimSerban Andrei Stan savim Data 20 iunie 2010 23:46:18
Problema Fibo3 Scor Ascuns
Compilator cpp Status done
Runda Marime 0.85 kb
#include <stdio.h>
#include <string.h>

int fib[2010], f1, f2;
int A[1010][1010];

void solve() {
	freopen("fibo3.in", "r", stdin);
	freopen("fibo3.out", "w", stdout);

	int n, x1, y1, x2, y2;
	
	scanf("%d", &n);
	for (int i = 1; i <= n; i++) {
    	scanf("%d %d %d %d", &x1, &y1, &x2, &y2);

    	int ret = A[x2][y2];
		if (x1 > 0)
			ret = ret - A[x1 - 1][y2];
		if (y1 > 0)
			ret = ret - A[x2][y1 - 1];
		if (x1 > 0 && y1 > 0)
			ret = ret + A[x1 - 1][y1 - 1];

		printf("%d\n", ret);
	}
}

int main() {
	f1 = f2 = 1;
	while (f2 <= 3000) {
		fib[f2] = 1;

		int aux = f1 + f2;
		f1 = f2;
		f2 = aux;
	}

	for (int i = 0; i <= 1000; i++)
		for (int j = 0; j <= 1000; j++) {
			A[i][j] = fib[i + j];

			if (i > 0)
				A[i][j] += A[i - 1][j];
			if (j > 0)
				A[i][j] += A[i][j - 1];
			if (i > 0 && j > 0)
				A[i][j] -= A[i - 1][j - 1];
		}

	solve();

	return 0;
}