Cod sursa(job #494926)

Utilizator cont_de_testeCont Teste cont_de_teste Data 23 octombrie 2010 13:09:28
Problema Dreptunghiuri Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.04 kb
#include<fstream>

using namespace std;

const char iname[]="dreptunghiuri.in";
const char oname[]="dreptunghiuri.out";
const int maxn=405;

ifstream f(iname);
ofstream g(oname);

int p,i,j,n,m,x1,x2,delta,rad[maxn*maxn],k,a,b,c,A[maxn][maxn];
long long rez;

int main()
{
    f>>n>>m;
    //--n,--m;
    if(n>m)
        i=n,n=m,m=i;
    for(i=1;i<m;++i)
        rad[i*i]=i;
    for(i=1;i<n;++i)
        for(j=1;j<m;++j)
        {
            p=0;
            if(j>=i)
            for(k=0;k<i;++k)
            {
                //a=1,b=-j,c=k*(i-k);
                delta=j*j-4*k*(i-k);
                if(delta>=0&&&rad[delta]>0) {
                delta=rad[delta];
                x1=(-b-delta)/2;
                x2=(-b+delta)/2;
                if(x1>=0&&x1<j)
                    ++p;
                if(x2!=x1&&x2>=0&&x2<j)
                    ++p;
                }
            }
            else
                p=A[j][i];
            A[i][j]=p;
            rez+=1LL*(n-i)*(m-j)*p;
        }
    g<<rez<<"\n";
}