Pagini recente » Arhiva de probleme | Cod sursa (job #2229064) | Cod sursa (job #2869894) | Cod sursa (job #1363345) | Cod sursa (job #306670)
Cod sursa(job #306670)
#include <fstream>
using namespace std;
int main()
{
int m,n,a[20][20],i,j,sum,max,lim,s1,l,v;
ifstream f("flip.in");
ofstream g("flip.out");
max=0;
f>>m>>n;
for (i=0;i<m;i++)
for (j=0;j<n;j++) {
f>>a[i][j];
max+=a[i][j];
}
lim=(1<<n)-1; // cate o cifra binara pt. fiecare coloana
for (l=1;l<lim;l++) // tate variantele de a stinge/aprinde coloanele matricei
{
v=l;
for (j=0;j<n && v>0;j++) {
if (v%2==1) {
for (i=0;i<m;i++)
a[i][j]=-a[i][j];
}
v=v>>1;
}
sum=0;
for (i=0;i<m;i++)
{
s1=0;
for (j=0;j<n;j++)
s1=s1+a[i][j];
if (s1<0)
sum=sum-s1;
else
sum=sum+s1;
}
if (sum>max)
max=sum;
v=l;
for (j=0;j<n && v>0;j++) {
if (v%2==1) {
for (i=0;i<m;i++)
a[i][j]=-a[i][j];
}
v=v>>1;
}
}
g<<max;
f.close();
g.close();
return 0;
}