Cod sursa(job #188481)
Utilizator | Data | 8 mai 2008 17:17:28 | |
---|---|---|---|
Problema | Jocul Flip | Scor | 0 |
Compilator | cpp | Status | done |
Runda | Arhiva de probleme | Marime | 1.63 kb |
#include<stdio.h>
#include<stdlib.h>
int mat[20][20],m,n,max=0;
void flip(int aux[]){
int sum,i,j,maxx;
for(i=0;i<m;i++)
if(aux[i]==1)
for(j=0;j<n;j++)
mat[i][j]*=-1;
maxx=0;
for(j=0;j<n;j++){
sum=0;
for(i=0;i<m;i++)
sum+=mat[i][j];
if(sum<0)
maxx-=sum;
else
maxx+=sum;
}
if(maxx>max)
max=maxx;
for(i=0;i<m;i++)
if(aux[i]==1)
for(j=0;j<n;j++)
mat[i][j]*=-1;
}
int main(){
int i,j,k=1,oks;
int aux[20];
freopen("flip.in","r+",stdin);
freopen("flip.out","w+",stdout);
scanf("%d %d",&m,&n);
for(i=0;i<m;i++)
for(j=0;j<n;j++)
scanf("%d",&mat[i][j]);
aux[k]=-1;
while(k>0){
oks=0;
while((oks==0)&&(aux[k]<1)){
aux[k]++;
oks=1;
}
if(oks)
if(k==m)
flip(aux);
else
aux[++k]=-1;
else
k--;
}
printf("%d",max);
return 0;
}