Cod sursa(job #3148501)

Utilizator andiRTanasescu Andrei-Rares andiR Data 1 septembrie 2023 20:36:08
Problema Dreptunghiuri Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 1.04 kb
#include <fstream>
#include <math.h>
#include <iostream>

#pragma GCC optimize("O3")

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

int n, m, i, j, z, delta, sq, solcrt, rad[401*401];
long long sol=0;
int main()
{
    fin>>n>>m;
    n--; m--;
    for (i=0; i<=400; i++)
        rad[i*i]=i;
    rad[0]=-1;
    for (i=1; i<=n; i++)
        for (j=1; j<=m; j++){
            solcrt=1;
            for (z=1; z<j; z++){
                delta=i*i-4*z*(j-z);
                if (delta>=0){
                    sq=rad[delta];
                    if (sq!=0){
                        if (sq==-1)
                            sq=0;
                        if ((i+sq)%2==0 && 0<(i+sq)/2)
                            solcrt++;
                        if (sq!=0 && i-sq>=0 && 0<(i-sq)/2)
                            solcrt++;
                    }
                }
            }
            //cout<<solcrt<<' ';
            sol+=solcrt*(n-i+1)*(m-j+1);
        }
    fout<<sol;
    return 0;
}