Cod sursa(job #1045012)

Utilizator Iulian94Kantor Iulian-Vlad Iulian94 Data 30 noiembrie 2013 19:12:37
Problema Dreptunghiuri Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.93 kb
#include <iostream>
#include <fstream>

using namespace std;


int main()
{
    int n,m,my[200000],z,Sk,Mi,Pl;
    unsigned long long S=0;
    ifstream f("dreptunghiuri.in");
    f>>n>>m;
    f.close();
    n--;m--;
    for(int i=1; i<=n || i<=m; ++i)
        my[i*i]=i;
    for(int i=1;i<=n;++i)
        for(int j=1;j<=m;++j)
        {
            Sk=0;
            for(int k=0;k<i;++k)
            {
                z=j*j-4*k*(i-k);
                if(z<0 ||(z && !my[z]))
                    continue;
                z=my[z];
                if ((j+z)%2!=0)
                    continue;
                Mi=(j-z)/2;
                Pl=(j+z)/2;
                if(0<=Mi && Mi<j)
                    Sk++;
                if(0<=Pl && Pl<j && Mi!=Pl)
                    Sk++;
            }
         S+=(n-i+1)*(m-j+1)*Sk;
        }
    ofstream g("dreptunghiuri.out");
    g<<S;
    g.close();
    return 0;
}