Cod sursa(job #1240515)

Utilizator xtreme77Patrick Sava xtreme77 Data 11 octombrie 2014 15:08:54
Problema Dreptunghiuri Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.91 kb
#include <fstream>

const char IN [ ] = "dreptunghiuri.in" ;
const char OUT [ ] = "dreptunghiuri.out" ;
const int MAX = 160014 ;

using namespace std;

ifstream fin ( IN ) ;
ofstream fout ( OUT ) ;

int val1 [ MAX ] , val2 [ MAX ] , lim ;
long long sol ;

int main(              )
{
    int n , m ;
    fin >> n >> m ;
    sol = 1LL * ( n - 1 ) * n * ( m - 1 ) * m >> 2 ;
    for ( int i = 1 ; i < n ; ++ i )
        for ( int j = 1 ; i + j + 1 <= n ; ++ j )
        {
            val1 [ i * j ] += ( n - i - j ) ;
            lim = max ( lim , i * j ) ;
        }
    for ( int i = 1 ; i < m ; ++ i )
        for ( int j = 1 ; i + j + 1 <= m ; ++ j )
        {
            val2 [ i * j ] += ( m - i - j ) ;
            lim = max ( lim , i * j ) ;
        }
    for ( int i = 1 ; i <= lim ; ++ i )
        sol = sol + 1LL * val1 [ i ] * val2 [ i ] ;
    fout << sol << '\n' ;
    return 0;
}