Pagini recente » Borderou de evaluare (job #2193169) | Borderou de evaluare (job #1339072) | Borderou de evaluare (job #1049312) | Borderou de evaluare (job #1356268) | Cod sursa (job #815471)
Cod sursa(job #815471)
#include<iostream>
#include<fstream>
#include<math.h>
using namespace std;
#define MAX 20
ifstream f("flip.in");
ofstream g("flip.out");
void citire( int& n, int& m, long int mat[MAX][MAX]){
f>>n>>m;
for (int i=0;i<n;i++)
for(int j=0;j<m;j++)
f>>mat[i][j];
}
int max(int b, int a){
if(a<b){
return b;
}
return a;
}
void comutare(int k,int n, int m,long int mat[MAX][MAX],int s[MAX],int MAXsum){
long int sumal,suma=0;
if(k-1==m){
for(int i=0;i<n;i++){
sumal=0;
for(int j=0;j<m;j++){
sumal+=mat[i][j]*s[j];
}
if(sumal<0){
suma-=sumal;
}else{
suma+=sumal;
}
MAXsum=max(MAXsum,suma);
}
}else{
s[k]=1;
comutare(k+1,n,m,mat,s,MAXsum);
s[k]=-1;
comutare(k+1,n,m,mat,s,MAXsum);
}
}
int main(){
int n,m,s[MAX],MAXsum=0;
long int mat[MAX][MAX];
citire(n,m,mat);
comutare(0,n,m,mat,s,MAXsum);
g<<MAXsum;
return 0;
}