Cod sursa(job #3148490)

Utilizator andiRTanasescu Andrei-Rares andiR Data 1 septembrie 2023 20:14:19
Problema Dreptunghiuri Scor 90
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 1.25 kb
#include <iostream>
#include <fstream>
#include <algorithm>
#include <cmath>
#include <map>
#include <set>
#include <queue>
#include <stack>
#include <deque>
#include <iomanip>
#include <vector>

#pragma GCC optimize("O3")
#define fi first
#define se second
#define pb push_back
#define pf push_front

using namespace std;
ifstream fin ("dreptunghiuri.in");
ofstream fout ("dreptunghiuri.out");
typedef long long ll;
const ll Nmax=1e6+5, inf=1e9+5;
using pll=pair<ll, ll>;

int n, m;
long long sol=0;
int main()
{
    ios::sync_with_stdio(0);
    cin.tie(0);
    cout.tie(0);

    fin>>n>>m;
    n--; m--;
    for (int i=1; i<=n; i++){
        for (int j=1; j<=m; j++){
            int solcrt=1;
            for (int z=1; z<j; z++){
                int delta=i*i-4*z*(j-z);
                int sq=sqrt(delta);
                if (sq==sqrt(delta)){
                    if ((i+sq)%2==0 && 0<(i+sq)/2 && (i+sq)/2<i)
                        solcrt++;
                    if (sq!=0 && i-sq>=0 && 0<(i-sq)/2 && (i-sq)/2<i)
                        solcrt++;
                }
            }
            //cout<<i<<' '<<j<<' '<<solcrt<<'\n';
            sol+=solcrt*(n-i+1)*(m-j+1);
        }
    }
    fout<<sol;
    return 0;
}