Cod sursa(job #1051705)

Utilizator deaconusabinDeaconu Sabin deaconusabin Data 10 decembrie 2013 14:15:56
Problema Jocul Flip Scor 40
Compilator c Status done
Runda Arhiva de probleme Marime 2.25 kb
#include <stdio.h>

int sum_matrix(int matrix[16][16],int lines, int cols)
{
    int sum = 0;
    int i,j;
    for (i=0; i < lines; i++)
        for (j=0; j < cols; j++)
            sum+= matrix[i][j];

    return sum;
}
int change_line(int matrix[16][16], int cols, int no_line)
{
    int j;
    int sum = 0;
    for (j=0; j< cols; j++)
        sum += matrix[no_line][j];
 
   if(sum < 0)
   {
        for (j=0; j< cols; j++)
            matrix[no_line][j] *= (-1);
        return 1;
    }
    return 0;

}
int change_col(int matrix[16][16], int lines, int no_col)
{
    int i;
    int sum = 0;
    for (i = 0; i< lines; i++)
        sum += matrix[i][no_col] ;

    if(sum < 0)
    {
        for (i= 0; i< lines; i++)
            matrix[i][no_col]*=(-1) ;
         return 1;
    }
        
    return 0;
}

int main()
{
    freopen ("flip.in","r",stdin);
    freopen ("flip.out","w",stdout);
    
    int n,m;
    int matrix[16][16];
    scanf("%d", &n);
    scanf("%d", &m);
    int i=0, j=0;
    
    for (i =0 ; i < n; i++ )
        for (j=0; j < m; j++)
            scanf("%d", &matrix[i][j]);

    
    int max_sum = sum_matrix(matrix,n,m);
   
    int sum = 0;    
    int it_n = 0;
    int it_m = 0;
    
    for(it_n = 0; it_n < n; it_n++)
    {
        change_line(matrix, m, it_n);
        sum = sum_matrix(matrix,n,m);
        if(sum > max_sum)
            max_sum = sum;
        for (it_m=0; it_m <m; it_m++)
        {
            if(change_col(matrix, n, it_m))
            {
                it_n=0;
                sum= sum_matrix(matrix,n,m);
                if(sum > max_sum)
                    max_sum = sum;
            }
        }
    }
    
    for (it_m=0; it_m <m; it_m++)
    {
        change_col(matrix, n, it_m);
        sum = sum_matrix(matrix,n,m);
        if(sum > max_sum)
            max_sum = sum;
        for(it_n = 0; it_n < n; it_n++)
        {
            if(change_line(matrix, m, it_n))
            {
                it_m=0;
                sum= sum_matrix(matrix,n,m);
                if(sum > max_sum)
                    max_sum = sum;
            }
        }
    }
    
    printf("%d",max_sum);
    fclose(stdout);
    fclose(stdin);
    return 0;
}