Pagini recente » Cod sursa (job #1332122) | Cod sursa (job #1971882) | Cod sursa (job #1722505) | Cod sursa (job #2699249) | Cod sursa (job #1750305)
#include <iostream>
#include <fstream>
using namespace std;
ifstream fin("flip.in");
int m,n,mat[16][16],aux[16][16];
void readArray(){
fin>>m>>n;
int aux,i=0,j=0;
while(fin>>aux){
mat[i][j]=aux;
j++;
if(j==n){
i++;
j=0;
}
}
}
fin.close();
void printArray(){
for(int i=0;i<m;i++){
for(int j=0;j<n;j++)
cout<<mat[i][j]<<' ';
cout<<'\n';
}
}
int sumArray(){
int s=0;
for(int i=0;i<m;i++){
for(int j=0;j<n;j++)
s=s+aux[i][j];
}
return s;
}
void copyArray(){
for(int i=0;i<m;i++){
for(int j=0;j<n;j++)
aux[i][j]=mat[i][j];
}
}
void solveRow(int i,int &s1) {
if(i==m-1){
for(int j=0;j<n;j++)
aux[i][j]=-1*aux[i][j];
if(sumArray()>s1)
s1=sumArray();
else
s1=s1;
}else{
for(int j=0;j<n;j++)
aux[i][j]=-1*aux[i][j];
if(sumArray()>s1){
s1=sumArray();
solveRow(i+1,s1);
}
else {
for(int j=0;j<n;j++)
aux[i][j]=-1*aux[i][j];
solveRow(i+1,s1);
}
}
}
void solveCollumn(int j, int &s1) {
solveRow(0,s1);
if(j==n-1){
for(int i=0;i<m;i++)
aux[i][j]=-1*aux[i][j];
if(sumArray()>s1)
s1=sumArray();
else
s1=s1;
}else{
for(int i=0;i<m;i++)
aux[i][j]=-1*aux[i][j];
if(sumArray()>s1){
s1=sumArray();
solveCollumn(j+1,s1);
}
else {
for(int i=0;i<m;i++)
aux[i][j]=-1*aux[i][j];
solveCollumn(j+1,s1);
}
}
}
int main(){
readArray();
copyArray();
int s=sumArray();
solveCollumn(0,s);
ofstream fout(flip.out)
fout<<s;
return 0;
}