Cod sursa(job #1722109)

Utilizator fanache99Constantin-Buliga Stefan fanache99 Data 27 iunie 2016 12:47:58
Problema Dreptunghiuri Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.92 kb
#include<cstdio>
#define MAXN 410
using namespace std;
int Sqrt[MAXN*MAXN];
int main(){
    freopen("dreptunghiuri.in","r",stdin);
    freopen("dreptunghiuri.out","w",stdout);
    int n,m,current,l,c,a,delta,i;
    long long answer=0;
    scanf("%d%d",&n,&m);
    n--;
    m--;
    for(i=1;i<=400;i++)
        Sqrt[i*i]=i;
    for(l=1;l<=n;l++)
        for(c=1;c<=m;c++){
            current=1;
            for(a=1;a<c;a++){
                delta=l*l-4*a*(c-a);
                if(delta<0)
                    continue;
                if(Sqrt[delta]*Sqrt[delta]!=delta||((l^Sqrt[delta])&1))
                    continue;
                if(Sqrt[delta]==0)
                    current++;
                else
                    if(Sqrt[delta]<l)
                        current+=2;
            }
            answer=answer+(long long)current*(n-l+1)*(m-c+1);
        }
    printf("%lld",answer);
    return 0;
}