Pagini recente » Monitorul de evaluare | Istoria paginii runda/2020 | Cod sursa (job #628749) | Cod sursa (job #1514149) | Cod sursa (job #949943)
Cod sursa(job #949943)
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
#define MAX 16
/*
void print_tab(int **tab, int maxl, int maxc) {
int i, j;
for (i=0; i<maxl; i++) {
for(j=0; j<maxc; j++)
printf("%4d", tab[i][j]);
printf("\n");
}
printf("\n");
}
*/
void write_suma(int suma, char *filename) {
FILE *f2 = fopen(filename, "w");
fprintf(f2, "%d\n", suma);
fclose(f2);
}
int main() {
int N, M, suma, i, j, slin, stmp, b,x;
int **Flip;
clock_t start = clock();
FILE *f1 = fopen("flip.in", "r");
fscanf(f1, "%d", &N); fscanf(f1, "%d", &M);
Flip = (int**)malloc(N * sizeof(int*));
for(i = 0; i < N; i++)
Flip[i] = (int*)malloc(M * sizeof(int));
for(i=0; i<N; i++)
for(j=0; j<M; j++)
fscanf(f1, "%d", &Flip[i][j]);
fclose(f1);
suma=0;
// b < 2^M (1 leftshift M)
for(b=0;b<1<<M;b++)
{
//cout<<"b="<<b;
stmp=0;
for(i=0;i<N;i++)
{
slin=0;
for(j=0,x=b;j<M;j++,x>>=1)
{
//cout<<"x="<<x<<" j="<<j<<"\n";
if(x&1)
slin-=Flip[i][j];
else
slin+=Flip[i][j];
}
if(slin<0)
stmp-=slin;
else
stmp+=slin;
}
if(stmp>suma)
suma = stmp;
}
write_suma(suma, "flip.out");
printf ( "%f\n", ( (double)clock() - start ) / CLOCKS_PER_SEC );
return 0;
}