Cod sursa(job #2382071)

Utilizator triscacezarTrisca Vicol Cezar triscacezar Data 17 martie 2019 17:55:45
Problema Dreptunghiuri Scor 100
Compilator cpp-64 Status done
Runda Lista lui wefgef Marime 0.75 kb
#include <bits/stdc++.h>

using namespace std;

const int MAXN=400;

ifstream f("dreptunghiuri.in");
ofstream g("dreptunghiuri.out");

int H,W,A,i,rad[MAXN*MAXN+1];

int main()
{
    int m,n;
    f>>n>>m;
    for(i=1;i<=MAXN;i++)
        rad[i*i]=i;
    long long nrS=0;
    for(H=1;H<n;H++)
        for(W=1;W<m;W++)
        {
            int nr=1;
            for(A=1;A<H;A++)
            {
                int delta=W*W-4*A*(H-A);
                if(delta==0&&W%2==0)
                    nr++;
                else
                    if((delta>0&&rad[delta]!=0)&&(W+rad[delta])%2==0&&W>rad[delta])
                        nr+=2;
            }
            nrS+=(long long)nr*(n-H)*(m-W);
        }
    g<<nrS;
    return 0;
}