Pagini recente » Cod sursa (job #208249) | Cod sursa (job #1468249) | Cod sursa (job #1274652) | Cod sursa (job #1187371) | Cod sursa (job #693493)
Cod sursa(job #693493)
#include <cstdio>
int cit[21][21], incol[21][21]; //cit- matricea citita; incol- matricea inmultita pe coloane
bool verif (int i, int j){
if( 1<<j & i ) return 1;
return 0;
}
int main(){
freopen("flip.in","r",stdin);
freopen("flip.out","w",stdout);
int n, m, i, i2, j2, j, k, colbit=0, Smax=0, Scur; //colbit = coloanele care le vom inmulti cu -1
scanf("%d %d",&n,&m);
for(i=1; i<=n; ++i) for(j=1; j<=m; ++j) scanf("%d",&cit[i][j]);
//printf(" \n%d\n ",1<<m);
for(; colbit<(1<<m); ++colbit){
//printf("!c ");
for(i=0; (1<<i)<colbit*2; ++i){
//printf("colbit=%d i=%d \n",colbit,i);
if(verif(colbit, i)){
//printf("!e "); //AICI
for(j=1; j<=n; ++j){
//printf("~ ",j,i);
incol[j][i+1]= cit[j][i+1] * (-1);
}
}
else{
for(j=1; j<=n; ++j)
incol[j][m+i]=cit[j][m+i]; //sau AICI
}
}
//printf("! ");
for(i2=1; i2<=n; ++i2){
Scur=0;
for(j2=1; j2<=m; ++j2){
Scur+=incol[i2][j2];
}
//printf("colbit=%d \n",colbit);
/* if(colbit==2){
printf("Scur=%d \n",Scur);
for(i2=1; i2<=n; ++i2){
for(j2=1; j2<=m; ++j2 )
printf("%d ",incol[i2][j2]);
printf("\n");
}
// printf("Scur=%d\n",Scur);
}*/
if(Scur<0){
for(j2=1; j2<=m; ++j2){
incol[i2][j2]*=(-1);
}
}
}
//printf("!a ");
Scur=0;
if(colbit==2)
for(i2=1; i2<=n; ++i2)
for(j2=1; j2<=m; ++j2)
Scur+=incol[i2][j2];
if(Scur>Smax){
// printf("Scur=%d ",Scur);
Smax=Scur;
}
//printf("!b ");
}
printf("%d\n",Smax);
}