Pagini recente » Monitorul de evaluare | Cod sursa (job #1811794) | Cod sursa (job #3333312) | Cod sursa (job #507593) | Cod sursa (job #269460)
Cod sursa(job #269460)
#include<stdio.h>
#define IN "flip.in","r",stdin
#define OUT "flip.out","w",stdout
int n,m,max=-20000;
int v[20][20],b[20];
void citire()
{
freopen(IN);
scanf("%d%d",&n,&m);
for(int i=1;i<=n;++i)
for(int j=1;j<=m;++j)
scanf("%d",&v[i][j]);
}
void back(int k)
{
if(k==n+1)
{
int sum=0,smax=0,t=1,i,j=1,msum=0;
// for(int i=1;i<=n;++i)
// printf("%d ",b[i]);
// printf("\n");
for(i=1;i<=n && t<=m;++i)
{
for(;j<=t;++j)
{
//printf("%d * %d == ",v[i][j],b[i]);
msum=msum+(v[i][j]*b[i]);
//printf("%d ",sum);
}
--j;
if(i==n)
{
if(msum<0)
sum+=msum*-1;
else sum+=msum;
i=0;
++t;
++j;
msum=0;
}
}
printf("\n");
if(sum>max)
max=sum;
return;
}
b[k]=1;
back(k+1);
b[k]=-1;
back(k+1);
}
void afisare()
{
freopen(OUT);
printf("%d\n",max);
}
int main()
{
citire();
back(1);
afisare();
return 0;
}