Pagini recente » Cod sursa (job #2211450) | Cod sursa (job #112397) | Cod sursa (job #99596) | Cod sursa (job #2084736) | Cod sursa (job #3166569)
#include <stdio.h>
#include <stdlib.h>
#include <stdint.h>
#include <stdbool.h>
int matrix[17][17];
bool need_switch_row(int row, int max){
int normal_sum = 0;
int switch_sum = 0;
for(int i = 0; i < max; i++){
normal_sum += matrix[row][i];
switch_sum -= matrix[row][i];
}
if( normal_sum > switch_sum){
return 0;
}
return 1;
}
bool need_switch_column(int column, int max){
int normal_sum = 0;
int switch_sum = 0;
for(int i = 0; i < max; i++){
normal_sum += matrix[i][column];
switch_sum -= matrix[i][column];
}
if( normal_sum > switch_sum){
return 0;
}
return 1;
}
void switch_column(int column, int max){
for(int i = 0; i < max; i++){
matrix[i][column] = -matrix[i][column];
}
}
void switch_row(int row, int max){
for(int i = 0; i < max; i++){
matrix[row][i] = -matrix[row][i];
}
}
int main(){
int N,M;
int sum = 0;
FILE *file_in;
file_in = fopen("flip.in", "rt");
fscanf(file_in,"%d%d",&N,&M);
for(int i = 0; i < N; i++){
for(int j = 0; j < M; j++){
fscanf(file_in,"%d",&matrix[i][j]);
}
}
fclose(file_in);
for(int i = 0; i < M; i++){
if(need_switch_row(i, M)){
switch_row(i, M);
}
}
for(int i = 0; i < N; i++){
if(need_switch_column(i, N)){
switch_column(i, N);
}
}
for(int i = 0; i < N; i++){
for(int j = 0; j < M; j++){
sum += matrix[i][j];
}
}
FILE *file_out;
file_out = fopen("flip.out", "wt");
fprintf(file_out,"%d\n",sum);
for(int i = 0; i < N; i++){
for(int j = 0; j < M; j++){
fprintf(file_out,"%d ",matrix[i][j]);
}
fprintf(file_out,"\n");
}
fclose(file_out);
return 0;
}