Cod sursa(job #209241)

Utilizator pauldbPaul-Dan Baltescu pauldb Data 21 septembrie 2008 15:32:26
Problema Dreptunghiuri Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.56 kb
#include <stdio.h>

#define inf 1000000
#define min(a,b) (a < b ? a : b)
#define ll long long

int n, m;
ll sol;

int main()
{
	freopen("dreptunghiuri.in", "r", stdin);
	freopen("dreptunghiuri.out", "w", stdout);

	scanf("%d %d ", &n, &m);
	n--, m--;

	int i, j, k, x, y, v, aux;

	if (n > m) aux = n, n = m, m = aux;

	for (i=0; i<=n; i++)
		for (j=i+1; j<=n; j++)
		{
			y = j-i;

			sol += m * (m+1) / 2;
			for (k=1; k<=m; k++) 
			{
				v = min((n-j) / k, (m-k) / y);
				x = (m-k) - v * y;
				sol += v*x + v*(v+1)*y/2;
			}
		}

	printf("%lld\n", sol);

	return 0;
}