Pagini recente » Cod sursa (job #1240567) | Cod sursa (job #348643) | Cod sursa (job #314095) | Cod sursa (job #1457868) | Cod sursa (job #23118)
Cod sursa(job #23118)
#include<stdio.h>
long int a[17][17],tl[17],tc[17],s;
int nc,nl,i,j,ok;
int flipl(int fi)
{ int js;
for(js=1;js<=nc;js++){a[fi][js]=-a[fi][js];
tc[js]+=2*a[fi][js];
tl[fi]+=2*a[fi][js];
}
return 0;
}
int flipc(int fj)
{ int is;
for(is=1;is<=nl;is++){a[is][fj]=-a[is][fj];
tl[is]+=2*a[is][fj];
tc[fj]+=2*a[is][fj];}
return 0;
}
int badl(int ib)
{
int js;
for(js=1;js<=nc;js++)
if((tc[js]-2*a[ib][js])<0) return 1;
return 0;
}
int badc(int jb)
{
int is;
for(is=1;is<=nl;is++)
if((tc[is]-2*a[is][jb])<0) return 1;
return 0;
}
int main()
{
FILE *f;
f=fopen("flip.in","r");
fscanf(f,"%d%d",&nl,&nc);
for(i=1;i<=nl;i++)
for(j=1;j<=nc;j++)
{fscanf(f,"%ld",&a[i][j]);
tl[i]+=a[i][j];
tc[j]+=a[i][j];
}
do{
ok=1;
for(i=1;i<=nl;i++)if(tl[i]<0){flipl(i);ok=0;}
if(ok) for(j=1;j<=nc;j++)if(tc[j]<0){flipc(j);ok=0;}
if(ok) for(i=1;i<=nl;i++) if(tl[i]==0) if(badl(i)){flipl(i);ok=0;}
if(ok) for(j=1;j<=nl;j++) if(tc[i]==0) if(badc(i)){flipc(i);ok=0;}
}while(ok==0);
fclose(f);
f=fopen("flip.out","w");
for(i=1;i<=nl;i++)s+=tl[i];
fprintf(f,"%ld\n",s);
fclose(f);
return 0;
}