Pagini recente » Cod sursa (job #2028746) | Cod sursa (job #772728) | Cod sursa (job #2665853) | Cod sursa (job #151771) | Cod sursa (job #2801426)
#define _CRT_SECURE_NO_WARNINGS
#include<stdio.h>
#define MAX 16
FILE *fin, *fout;
int N, M, i, j;
int tabla[MAX][MAX];
int sum_L[MAX], sum_C[MAX];
int minj = 0;
int mini = 0;
int c = 0;
int suma = 0;
void afiseaza_matrice() {
for (i = 0; i < N; i++) {
for (j = 0; j < M; j++) {
//printf("% d ", tabla[i][j]);
}
//printf("\n");
}
}
void citire() {
fscanf(fin, "%d %d", &N, &M);
for (i = 0; i < N; i++) {
for (j = 0; j < M; j++) {
fscanf(fin, "%d", &tabla[i][j]);
}
}
}
void calculeaza_sumele() {
for (i = 0; i < N; i++) {
for (j = 0; j < M; j++) {
sum_C[j] += tabla[i][j];
sum_L[i] += tabla[i][j];
}
}
}
void verifica() {
c = 0;
for (i = 0; i < N; i++) {
if (sum_L[i] < 0) c++;
}
for (j = 0; j < M; j++) {
if (sum_C[j] < 0) c++;
}
//printf("c:%d\n", c);
}
void calculeaza_minim() {
for (j = 0; j < M; j++) {
if (sum_C[minj] > sum_C[j])
minj = j;
//printf("C[%d] = %d\n", j, sum_C[j]);
}
//printf("\n");
for (i = 0; i < N; i++) {
if (sum_L[mini] > sum_L[i])
mini = i;
//printf("L[%d] = %d\n", j, sum_L[i]);
}
//printf("\n");
}
void comuta() {
if (sum_C[minj] < sum_L[mini]) {
//printf("%d\n", sum_C[minj]);
sum_C[minj] *= -1;
for (i = 0; i < N; i++) {
tabla[i][minj] *= -1;
}
}
else {
//printf("%d\n", sum_L[mini]);
sum_L[mini] *= -1;
for (j = 0; j < M; j++) {
tabla[mini][j] *= -1;
}
}
}
void calculeaza_rezulat() {
for (i = 0; i < N; i++) {
for (j = 0; j < M; j++) {
suma += tabla[i][j];
}
}
//printf("%d\n", suma);
}
int main() {
fin = fopen("flip.in", "r");
fout = fopen("flip.out", "w");
citire();
calculeaza_sumele();
verifica();
while (c > 0) {
calculeaza_minim();
comuta();
afiseaza_matrice();
verifica();
}
//printf("\nRezultat:");
calculeaza_rezulat();
fprintf(fout, "%d", suma);
}