Cod sursa(job #757348)
Utilizator | Data | 11 iunie 2012 21:31:10 | |
---|---|---|---|
Problema | Jocul Flip | Scor | 30 |
Compilator | cpp | Status | done |
Runda | Arhiva de probleme | Marime | 3.38 kb |
#include <stdio.h>
int main()
{
FILE *f, *g;
f = fopen("flip.in", "r");
g = fopen("flip.out", "w");
int n, m;
fscanf(f, "%d", &n);
fscanf(f, "%d", &m);
long a[n][m], a2[n][m], line[n], col[m],s=0, suma = 0, sumanou = 0;
for(int i = 0; i < n; i++)
for (int j = 0; j < m; j++)
fscanf(f, "%ld", &a[i][j]);
for(int j = 0; j < m; j++)
col[j] = 0;
for(int i = 0; i < m; i++){
for (int j = 0; j < n; j++)
col[i] += a[j][i];
}
for(int i = 0; i < m; i++)
if(col[i] < 0)
for(int j = 0; j < n; j++)
a[j][i] = a[j][i] * (-1);
for(int i = 0; i < n; i++)
line[i] = 0;
for(int i = 0; i < n; i++)
for (int j = 0; j < m; j++)
line[i]+= a[i][j];
for(int i = 0; i < n; i++)
if(line[i] < 0)
for (int j = 0; j < m; j++)
a[i][j] = a[i][j] * (-1);
for(int i = 0; i < n; i++)
for (int j = 0; j < m; j++)
{
a2[i][j] = a[i][j];
suma += a[i][j];
}
for(int i = 0; i < n; i++)
for (int j = 0; j < m; j++)
if (a[i][j] > 0)
{
suma = 0;
sumanou = 0;
for(int k = 0; k < n; k++)
if(k != i){
suma += a[k][j];
sumanou += (-a[k][j]);
}
for(int k = 0; k < m; k++)
if(k != j){
suma += a[i][k];
sumanou += (-a[i][k]);
}
if(sumanou > suma){
for(int k = 0; k < n; k++)
if(k != i)
a[k][j] = -a[k][j];
for(int k = 0; k < m; k++)
if(k != j)
a[i][k] = -a[i][k];
}
}
for(int i = 0; i < n; i++)
for (int j = 0; j < m; j++)
{
s += a[i][j];
}
fprintf(g, "%ld", s);
}