Cod sursa(job #285748)

Utilizator udrescu_cristiUdrescu Cristian udrescu_cristi Data 22 martie 2009 21:44:41
Problema Jocul Flip Scor 10
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.02 kb
#include<iostream.h>
#include<stdio.h>
FILE *f=fopen("flip.in","r"),*g=fopen("flip.out","w");
 int main()
{
long a[100][100],i,j,m,n,min1,min2,s=0,x1,x2;
int t=1;
fscanf(f,"%ld %ld\n",&n,&m);
for(i=1;i<=n;i++)
for(j=1;j<=m;j++)
fscanf(f,"%ld ",&a[i][j]);
do
{
s=0;
t=1;
min1=10000;
min2=10000;
 for(i=1;i<=n;i++)
{
s=0;
for(j=1;j<=m;j++)
s+=a[i][j];
if(s<min1)
{
min1=s;
x1=i;
}
}
 for(i=1;i<=m;i++)
{
s=0;
for(j=1;j<=n;j++)
s+=a[j][i];
if(s<min1)
{
min2=s;
x2=i;
}
}
if(min1<0&&min2<0)
{
t=0;
for(i=1;i<=m;i++)
a[x1][i]=a[x1][i]*-1;
for(i=1;i<=n;i++)
if(i!=x1)
a[i][x2]=a[i][x2]*-1;
}
if(min1<0&&min2>0)
{
if(min1+min2<0)
{
t=0;
for(i=1;i<=m;i++)
a[x1][i]=a[x1][i]*-1;
for(i=1;i<=n;i++)
if(i!=x1)
a[i][x2]=a[i][x2]*-1;
}
}
if(min1>0&&min2<0)
{
if(min1+min2<0)
{
t=0;
for(i=1;i<=m;i++)
a[x1][i]=a[x1][i]*-1;
for(i=1;i<=n;i++)
if(i!=x1)
a[i][x2]=a[i][x2]*-1;
}
}
}
while(!t);
s=0;
for(i=1;i<=n;i++)
for(j=1;j<=m;j++)
s+=a[i][j];
 fprintf(g,"%ld",s);
return 0;
}