Pagini recente » Cod sursa (job #1728272) | Cod sursa (job #418957) | Cod sursa (job #866957) | Cod sursa (job #2896495) | Cod sursa (job #966142)
Cod sursa(job #966142)
#include <stdio.h>
#include <stdlib.h>
long tab[17][17], sum = 0, max = -0xffff;
int v[17];
int n, m;
void flip(int k) {
int i;
for(i = 0; i < m; i++)
tab[k][i] *= -1;
}
void read() {
FILE *fin;
int i, j;
fin = fopen("flip.in","r");
fscanf(fin,"%d %d", &n, &m);
for(i = 0; i < n; i++)
for(j = 0; j < m; j++)
fscanf(fin, "%d", &tab[i][j]);
fclose(fin);
}
void compute() {
int k = 0, i, j, ok;
long s;
v[k] = -1;
while(k > -1) {
ok = 0;
while(v[k] < 1 && !ok) {
v[k]++;
if(v[k]) flip(k);
ok=1;
}
if(ok)
if(n - 1 == k){
sum = 0;
for(i = 0; i < m; i++) {
s = 0;
for(j = 0; j <= n;j++)
s+=tab[j][i];
if(s < 0)
sum -= s;
else
sum+=s;
}
if(sum > max)
max=sum;
}
else
v[++k] = -1;
else {
k--;
if(v[k]) flip(k);
}
}
}
void print(){
FILE *fout;
fout = fopen("flip.out","w");
fprintf(fout,"%d",max);
fclose(fout);
}
int main()
{
read();
compute();
print();
return 0;
}