Cod sursa(job #822831)

Utilizator cristianalex81Cristian Alexandru cristianalex81 Data 24 noiembrie 2012 03:22:25
Problema Dreptunghiuri Scor 0
Compilator cpp Status done
Runda Lista lui wefgef Marime 0.95 kb
#include <fstream>
#include <cstdio>
#include <cmath>
#include <cstring>
#include <string>
#include <vector>
#include <queue>
#include <stack>
#include <set>
#include <map>
#include <cassert>
#include <cctype>
#include <cstdlib>
#include <algorithm>

using namespace std;

int N, M;

int main()
{
	ifstream cin("dreptunghiuri.in");
	ofstream cout("dreptunghiuri.out");

	cin >> N >> M;
    	N--;
    	M--;

	long long ans = 0;
	for(int i = 1; i <= N; i++)
        for(int j = 1; j <= M; j++) {
            ans += (long long)(N - i + 1) * (M - j + 1);
        }

    	for(int i = 1; i <= N; i++)
        for(int j = 1; j <= M; j++) {
            int sz = i + j;
            long long rot = min(i, j);
            if(rot > 1)
                rot = (rot - 1) * 2 + 1;
            ans += (long long)max(0, N - sz + 1) * max(0, M - sz + 1) * rot;
        }

    	cout << ans << endl;
	cin.close();
	cout.close();
	return 0;
}