Cod sursa(job #877655)

Utilizator paul_gabryelPaul Buda paul_gabryel Data 13 februarie 2013 01:01:43
Problema Dreptunghiuri Scor 70
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.11 kb

#include <cstdio>
#include <cmath>
#include <fstream>

using namespace std;

int n,m,SOL;

void READ ()
{

    ifstream in ("dreptunghiuri.in");

    in>>n>>m;

}

void SOLVE ()
{

    int S,B,C,X1,X2,D;
    for( int i=1 ; i <= n ; ++i )
        for( int j=1 ; j <= m ; ++j )
        {
            S=0;
            for( int k=0 ; k < i ; ++k )
            {
                B=-j;
                C=k*(i-k);
                D=B*B-4*C;
                if( D < 0 || ( D && ((int)sqrt(D)) != sqrt(D)) )
                    continue;
                X1=(-B+sqrt(D));
                X2=(-B-sqrt(D));
                if( X1&1 )
                    continue;
                X1>>=1;
                X2>>=1;
                if( 0 <= X1 && X1 < j )
                    ++S;
                if( 0 <= X2 && X2 < j && X1 != X2 )
                    ++S;
            }
            SOL+=(n-i)*(m-j)*S;
        }

}

void OUT ()
{

    freopen ("dreptunghiuri.out","w",stdout);

    printf("%d\n",SOL);

}

int main ()
{

    READ ();
    SOLVE ();
    OUT ();

    return 0;

}