Pagini recente » Sandbox (cutiuţa cu năsip) | Istoria paginii runda/11111111111111111/clasament | Cod sursa (job #1461074) | Istoria paginii runda/oni_10_bv/clasament | Cod sursa (job #763815)
Cod sursa(job #763815)
#include <stdio.h>
FILE *fi,*fo;
int n,m;
long int a[17][17];
void read ()
{int i,j;
fi=fopen("flip.in","r");
fscanf(fi,"%d",&n);
fscanf(fi,"%d",&m);
for(i=1; i<=n;i++)
for(j=1; j<=m;j++)
fscanf(fi,"%ld",&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,"%ld\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;
}