Pagini recente » Cod sursa (job #1021587) | Cod sursa (job #2419975) | Cod sursa (job #2263437) | Cod sursa (job #1199872) | Cod sursa (job #639957)
Cod sursa(job #639957)
/**
Gigel a descoperit un nou joc pe care l-a numit "Flip". Acesta se
joaca pe o tabla dreptunghiulara de dimensiuni N*M care contine
numere intregi. Fiecare linie si fiecare coloana are un comutator
care schimba starea tuturor elementelor de pe acea linie sau
coloana, inmultindu-le cu -1. Scopul jocului este ca pentru o
configuratie data a tablei de joc sa se actioneze asupra liniilor
si coloanelor astfel incat sa se obtina o tabla cu suma elementelor
cat mai mare.*/
#include <fstream>
#include <iostream>
using namespace std;
int lin,col,smax,slin[20],a[20][20],i,j;
ifstream f("flip.in");
ofstream fo("flip.out");
void citire(){
f>>lin>>col;
for(i=1;i<=lin;i++)
for(j=1;j<=col;j++)
f>>a[i][j];
}
void maxnou(){
int i,j,s,sum;
sum=0;
for(j=1;j<=col;j++){
s=0;
for(i=1;i<=lin;i++)
s+=slin[i]*a[i][j];
s=s<0?-s:s;
sum+=s;
}
if(smax<sum)smax=sum;
}
void back(int x){
if(x==lin+1){
maxnou();
return ;
}
slin[x]=-1;
back(x+1);
slin[x]=1;
back(x+1);
}
int main(){
citire();
if(1<=lin&&col<=16)//1 ≤ N, M ≤ 16
back(1);
fo<<smax<<endl;
return 0;
}