Cod sursa(job #1216063)

Utilizator mariusn01Marius Nicoli mariusn01 Data 3 august 2014 10:49:30
Problema Dreptunghiuri Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.41 kb
#include <fstream>
#define DIM 402
#include <cmath>

using namespace std;
ifstream fin("dreptunghiuri.in");
ofstream fout("dreptunghiuri.out");

double rd;
int n, m, i, j, L, C, rad, H, sol, delta, x;

int D[DIM][DIM];

int main () {
    fin>>n>>m;
    n--;
    m--;
    for (L=1;L<=n;L++)
        for (C=1;C<=m;C++) {

            for (H=1; H<L; H++) {
                delta = C*C - 4 * L*H  + 4 * H*H;

                if (delta < 0)
                    continue;

                rd = sqrt(delta);

                if (rd != (int)rd)
                    continue;
                rad = (int)rd;

                if (rad == 0) {
                    if (C % 2 == 0) {
                        if (C/2 >= 1 && C/2 <C)
                            D[L][C]++;
                    }

                } else {
                    if ((C - rad) % 2 == 0) {
                        x = (C-rad)/2;
                        if (x >= 1 && x < L)
                            D[L][C]++;
                    }

                    if ((C + rad) % 2 == 0) {
                        x = (C+rad)/2;
                        if (x >= 1 && x < L)
                            D[L][C]++;
                    }
                }

            }
            D[L][C] ++;

        }

    for (i=1;i<=n;i++)
        for (j=1;j<=m;j++)
            sol+=D[i][j]*(n-i+1)*(m-j+1);
    fout<<sol;

    return 0;
}