Pagini recente » Cod sursa (job #3296552) | Cod sursa (job #2130233) | Istoria paginii utilizator/babypink | Cod sursa (job #3296722) | Cod sursa (job #763814)
Cod sursa(job #763814)
#include <stdio.h>
FILE *fi,*fo;
int n,m;
long int a[17][17];
void read ()
{int i,j;
fi=fopen("flip.in","r");
if(fi==NULL) {printf("Nu\n");
return 0;}
fscanf(fi,"%d",&n);
fscanf(fi,"%d",&m);
for(i=1; i<=n;i++)
for(j=1; j<=m;j++)
fscanf(fi,"%d",&a[i][j]);
}
void sumaf()
{int i,j;
long int sum=0;
for(i=1; i<=n; i++)
for(j=1; j<=m; j++)
sum+=a[i][j];
fo=fopen("flip.out","w");
fprintf(fo,"%d\n",sum);
}
int sumline(int l)
{
int j;
long int s=0;
for(j=1; j<=m; j++)
s+=a[l][j];
if (s>=0) return 1;
else return 0;
}
int sumcol(int c)
{
int i;
long int s=0;
for(i=1; i<=m; i++)
s+=a[i][c];
if (s>=0) return 1;
else return 0;
}
void changeline (int i)
{
int j;
for(j=1; j<=m; j++)
a[i][j]*=-1;
}
void changecol(int j)
{
int i;
for(i=1; i<=n; i++)
a[i][j]*=-1;
}
int check()
{int i,j;
for(i=1; i<=n; i++)
if(sumline(i)==0)
return 0;
for(j=1; j<=m; j++)
if(sumcol(j)==0)
return 0;
return 1;
}
int main()
{
int i,j,k=0;
read();
while(k==0)
{
if(check()==1) {sumaf(); k=1;}
else {if(n<=m)
{
for(i=1;i<=n;i++)
if(sumline(i)==0)
changeline(i);
for(j=1; j<=m;j++)
if(sumcol(j)==0)
changecol(j);
}
else {for(j=1; j<=m;j++)
if(sumcol(j)==0)
changecol(j);
for(i=1;i<=n;i++)
if(sumline(i)==0)
changeline(i);
}
}
}
return 0;
}