Pagini recente » Cod sursa (job #2467623) | Cod sursa (job #1205115) | Monitorul de evaluare | Cod sursa (job #2628300) | Cod sursa (job #2427282)
#include <iostream>
#include<fstream>
using namespace std;
ifstream f("flip.in");
ofstream g("flip.out");
int S=0;
void inmulteste(int n,int m,int a[][17],int nr, char c,int *z)
{
if(c=='c')
{
for(int i=1;i<=n;i++)
{
a[i][nr]*=-1;
(*z)+=2*a[i][nr];
}
}
else
if(c=='l')
{
for(int i=1;i<=m;i++)
{
a[nr][i]*=-1;
(*z)+=2*a[nr][i];
}
}
}
int main()
{
int stiva[40],n,m,a[17][17],M=0,i;
f>>n>>m;
for(int i=1;i<=n;i++)
{
for(int j=1;j<=m;j++)
{
f>>a[i][j];
S+=a[i][j];
}
}
for(i=1;i<=n+m;i++)
stiva[i]=-1;
int k=1;
while(k>=1)
{
stiva[k]++;
if(stiva[k]<=1)
{
if(k==n+m)
{
int z=S;
for(i=1;i<=n;i++)
if(stiva[i]==1)
inmulteste(n,m,a,i,'l',&z);
for(i=n+1;i<=n+m;i++)
if(stiva[i]==1)
inmulteste(n,m,a,i-n,'c',&z);
if(z>M)
M=z;
for(i=1;i<=n;i++)
if(stiva[i]==1)
inmulteste(n,m,a,i,'l',&z);
for(i=n+1;i<=n+m;i++)
if(stiva[i]==1)
inmulteste(n,m,a,i-n,'c',&z);
}
else
k++;
}
else
{
stiva[k]=-1;
k--;
}
}
g<<M;
}