Pagini recente » Cod sursa (job #2548163) | Cod sursa (job #2259462) | Cod sursa (job #867383) | Cod sursa (job #1759805) | Cod sursa (job #1204138)
#include <stdio.h>
#include <stdlib.h>
int calc_suma(int** t, int n, int m){
int suma = 0, i, j;
for(i=0;i<n;i++){
for(j=0;j<m;j++){
suma += t[i][j];
}
}
return suma;
}
int check_ln(int** t, unsigned line, int n, int m){
int j;
int suma_p = calc_suma(t, n, m);
for(j=0;j<m;j++){
t[line][j] = (-1) * t[line][j];
}
int suma_n = calc_suma(t, n, m);
return suma_p >= suma_n ? 0 : 1;
}
int check_col(int** t, unsigned col, int n, int m){
int j;
int suma_p = calc_suma(t, n, m);
for(j=0;j<n;j++){
t[j][col] = (-1) * t[j][col];
}
int suma_n = calc_suma(t, n, m);
return suma_p >= suma_n ? 0 : 1;
}
int main() {
unsigned n, m, i, j;
FILE * file_ptr;
int **t;
file_ptr = fopen("flip.in", "r");
if(file_ptr == NULL)
exit(EXIT_FAILURE);
fscanf(file_ptr, "%d", &n);
fscanf(file_ptr, "%d", &m);
t = (int**)malloc( n* sizeof(int*));
for(i = 0; i < n ; i++ )
{
t[i] = (int*)malloc( n*sizeof(int) ) ;
}
for(i=0;i<n;i++){
for(j=0;j<m;j++){
fscanf(file_ptr, "%d", &t[i][j]);
}
}
fclose(file_ptr);
//verifica liniile
for(i=0;i<n;i++)
if(check_ln(t, i, n, m)){
for(j=0;j<m;j++){
t[i][j] = (-1) * t[i][j];
}
}
for(i=0;i<m;i++)
if(check_col(t, i, n, m)){
for(j=0;j<n;j++){
t[j][i] = (-1) * t[j][i];
}
}
file_ptr = fopen("flip.out", "w+");
fprintf(file_ptr, "%d", (-1)*calc_suma(t, n, m));
fclose(file_ptr);
return 0;
}