Pagini recente » Cod sursa (job #605616) | Statistici Irimia Mirela (ana_mirela) | Rating Mefistoss (Mefistoss) | Statistici Suciu Cosmin (suciucosmin) | Cod sursa (job #188884)
Cod sursa(job #188884)
#include<stdio.h>
long int a[17][17],cod,k,p,sl,nl,nc,i,j,sm,sc;
int main()
{
freopen("flip.in","rt",stdin);
freopen("flip.out","wt",stdout);
scanf("%ld%ld",&nl,&nc);
for(i=0;i<nl;i++)
for(j=0;j<nc;j++)
scanf("%ld",&a[i][j]);
k=1<<(nc-1);//k=10...0 cu nc cifre
for(p=0;p<k;p++)
// p=sablonul semnelor pt flipul pe coloane
// primul sablon p= 0=000..00 cu nc cifre
// ultimul sablon p=k-1=011..11 cu nc cifre
{ sc=0;//suma pe matrice pt sablon curent
for(j=0;j<nc;j++)//calculez semnele corespunzator sablonului
semn[j]=((p>>j)&1)?1:(-1);
for(i=0;i<nl;i++)//calculez suma neflipata pe fiecare linie
{sl=0;//initial suma pe linia curenta e 0
for(j=0;j<nc;j++)//calculul sumei pe linia curenta
sl+=semn[j]*a[i][j];
sl=(sl<0)?(-sl):sl;//daca suma liniei e negativa atunci linia
//TREBUIE FLIPATA ceea ce schimba semnul sumei
sc+=sl;//adunam valoarea pozitiva la suma pe toata matricea
}
sm=(sm>sc)?sm:sc;//actualizez solutia finala sm
//daca am o solutie mai buna cu configuratia curenta de flip vertical
}
printf("%ld\n",sm);
return 0;
}