Pagini recente » Cod sursa (job #1037894) | Cod sursa (job #2102971) | Cod sursa (job #63873) | Cod sursa (job #70927) | Cod sursa (job #20251)
Cod sursa(job #20251)
#include <fstream.h>
int n,m,mat[50][50];
void citire (int &n,int &m)
{
std::ifstream f ("flip.in");
f>>n>>m;
for (int i=0;i<n;i++)
for (int j=0;j<m;j++)
f>>mat[i][j];
f.close();
}
int suma (int n,int m)
{
int s=0;
for (int i=0;i<n;i++)
for (int j=0;j<m;j++)
s+=mat[i][j];
return s;
}
int sL (int m,int r)
{
int s=0;
for (int i=0;i<m;i++)
s+=mat[r][i];
return s;
}
int sC (int n,int r)
{
int s=0;
for (int i=0;i<n;i++)
s+=mat[i][r];
return s;
}
void intoarceL (int m,int j)
{
int k;
for (k=0;k<m;k++)
mat[j][k]*=-1;
}
void intoarceC (int n,int i)
{
int k;
for (k=0;k<n;k++)
mat[k][i]*=-1;
}
int flip (int n,int m)
{
int s=suma(n,m),i,j,sumalin,h;
for (h=0;h<n;h++)
mat[h][m]=0;
for (i=0;i<m;i++)
{
intoarceC (n,i);
if (suma(n,m)>s)
s=suma(n,m);
else
{for (j=0;j<n;j++)
if (sL(m,j)<0)
{
intoarceL(m,j);
mat[j][m]=1;
}
}
if (suma(n,m)>s)
{s=suma(n,m);}
else
{
for (h=0;h<n;h++)
if (mat[h][m]==1)
intoarceL(m,h);
intoarceC (n,i);
}
}
return s;
}
int main ()
{
citire(n,m);
std::ofstream g ("flip.out");
g<<flip(n,m);
return 0;
}