Cod sursa(job #850416)

Utilizator paunmatei7FMI Paun Matei paunmatei7 Data 8 ianuarie 2013 15:12:48
Problema Balans Scor 25
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.38 kb
#include<stdio.h>
#include<algorithm>
using namespace std ;
long a [ 307 ] [ 307 ] , r , c , n , m , sum ;
double balans ;
int main ( )
{
    freopen ( "balans.in" , "r" , stdin ) ;
    freopen ( "balans.out" , "w" , stdout ) ;
    scanf ( "%ld %ld %ld %ld" , & n , & m , & r, & c ) ;
    for ( long i = 1 ; i <= n ; ++ i )
        for ( long j = 1 ; j <= m ; ++ j )
        {
            scanf ( "%ld" , & a [ i ] [ j ] ) ;
            a [ i + n ] [ j ] = a [ i ] [ j ] ;
            a [ i ] [ j + m ] = a [ i ] [ j ] ;
            a [ i + n ] [ j + m ] = a [ i ] [ j ] ;
        }
    for ( long i = 1 ; i <= n * 2 ; ++ i )
        for ( long j = 1 ; j <= m * 2 ; ++ j )
            a [ i ] [ j ] += a [ i - 1 ] [ j ] + a [ i ] [ j - 1 ] - a [ i - 1 ] [ j - 1 ] ; //fac sume
    if ( r == 0 )
        r = 1 ;
    if ( c == 0 )
        c = 1 ;
    for ( ; r <= n ; ++ r )
        for ( ; c <= m ; ++ c )
            for ( long i = n + 1 ; i <= n * 2; ++ i )
                for ( long j = m + 1 ; j <= m * 2 ; ++ j )
                {
                    sum = a [ i ] [ j ] + a [ i - r ] [ j - c ] - a [ i - r ] [ j ] - a [ i ] [ j - c ] ;
                    double aux = sum , prod = c * r ;
                    if ( aux > balans * prod )
                        balans = aux / prod ;
                }
    printf ( "%.3lf", ( long ) ( balans * 1000 ) /  1000.0 ) ;
}