Cod sursa(job #977907)
#include<stdio.h>
long tabla [17][17];
int n,m;
void flipLinie (int linie)
{
int i;
for(i=0;i<m;i++)
{
tabla[linie][i]= 0 - tabla [linie][i];
}
}
void flipColoana (int col)
{
int i;
for(i=0;i<n;i++)
tabla[i][col]= 0 - tabla[i][col];
}
long sumaLinie(int linie)
{
int i;
long s=0;
for(i=0;i<m;i++)
{
s+= tabla [linie][i];
}
return s;
}
long sumaColoana( int col)
{
int i;
long s=0;
for(i=0;i<n;i++)
s+=tabla[i][col];
return s;
}
long sumaInversa(int linie, int col)
{
int i;
long s=0;
for(i=0;i<n;i++)
s+=-tabla[i][col];
for(i=0;i<m;i++)
{
s+= -tabla [linie][i];
}
s-=-tabla[linie][col];
return s;
}
void afisare()
{
int i,j;
for(i=0;i<n;i++)
{
for(j=0;j<m;j++)
printf("%ld ", tabla[i][j]);
printf("\n");
}
}
void suma()
{
int i,j;
long sum=0;
FILE *g;
g=fopen ( "flip.out", "wt");
for(i=0;i<n;i++)
for(j=0;j<m;j++)
sum+=tabla[i][j];
fprintf(g,"%ld", sum);
}
int main(void)
{
FILE *f;
int i,j;
int exit=1;
f=fopen ( "flip.in", "rt");
fscanf(f,"%d",&n);
fscanf(f,"%d",&m);
for(i=0;i<n;i++)
for(j=0;j<m;j++)
fscanf(f,"%ld", &tabla[i][j]);
/*
flipLinie(1);
afisare();
* /
*/
do
{
exit=0;
for(i=0;i<n;i++)
if (sumaLinie(i) < 0 )
{
flipLinie(i);
exit=1;
}
for(j=0;j<m;j++)
if(sumaColoana(j) < 0 )
{
flipColoana(j);
exit=1;
}
}while(exit);
suma();
return 0;
}