Cod sursa(job #217560)
Utilizator | Data | 28 octombrie 2008 22:02:02 | |
---|---|---|---|
Problema | Jocul Flip | Scor | 0 |
Compilator | cpp | Status | done |
Runda | Arhiva de probleme | Marime | 4.78 kb |
#include<fstream.h>
#include<math.h>
long int n,m,a[15][15];
int main()
{ int i,j,max,lin,col,max2,lin2,col2;
long int sum;
sum=0;
ifstream f("flip.in");
f>>n>>m;
if((n<=16)&&(n>=1)&&(m<=16)&&(m>=1))
{ for(i=0;i<=n;i++)
{for(j=0;j<=m;j++)
f>>a[i][j];
}
f.close();
max=0;
lin=0;
col=0;
for(i=0;i<=n;i++)
for(j=0;j<=m;j++)
if(abs(a[i][j])>max) {
max=abs(a[i][j]);
lin=i;
col=j;
}
max2=max;
if(a[lin][col]<0) { max2=a[lin-1][col];
if(a[lin-1][col-1]<max2) {
max2=a[lin-1][col];
lin2=lin-1;
col2=col;
}
else if(a[lin][col-1]<max2)
{max2=a[lin][col-1];
lin2=lin;
col2=col-1;
}
else if(a[lin+1][col]<max2)
{max2=a[lin+1][col];
lin2=lin+1;
col2=col;
}
else if(a[lin][col+1]<max2) {max2=a[lin][col+1];
lin2=lin;
col2=col+1;}
}
else
{ max2=a[lin-1][col];
if(a[lin-1][col-1]>max2) {
max2=a[lin-1][col];
lin2=lin-1;
col2=col;
}
else if(a[lin][col-1]>max2)
{max2=a[lin][col-1];
lin2=lin;
col2=col-1;
}
else if(a[lin+1][col]>max2)
{max2=a[lin+1][col];
lin2=lin+1;
col2=col;
}
else if(a[lin][col+1]>max2) {max2=a[lin][col+1];
lin2=lin;
col2=col+1;
}
}
if((max2<0)&&(a[lin][col]<0))
{for(j=0;j<m;j++)
a[lin2][j]=a[lin2][j]*(-1);
for(i=0;i<n;i++)
a[i][col2]=a[i][col2]*(-1);
}
else {if((max2<0)&&(a[lin][col]>0))
{
for(j=0;j<m;j++)
a[lin2][j]=a[lin2][j]*(-1);
for(i=0;i<n;i++)
a[i][col2]=a[i][col2]*(-1);
}
}
}
for(i=0;i<n;i++)
for(j=0;j<m;j++)
sum=sum+a[i][j];
ofstream g("flip.out");
g<<sum;
return 0;
}