Pagini recente » Istoria paginii runda/just_4_me | Cod sursa (job #1908726) | Cod sursa (job #304575) | Cod sursa (job #3173923) | Cod sursa (job #2131817)
#include <stdio.h>
typedef struct structure
{
long long plus, minus;
}struc;
void readfrom(int *n, int *m, int a[20][20])
{
FILE *f; int i, j;
f = fopen("flip.in", "r");
fscanf(f, "%d %d", n, m);
for (i = 0; i < *n; i++)
for (j = 0; j < *m; j++)
fscanf(f, "%d", &a[i][j]);
fclose(f);
}
void output(long long s)
{
FILE *g;
g = fopen("flip.out", "w");
fprintf(g, "%lli", s);
fclose(g);
}
long long si = 0, sum = 0;
void lets_sum(int n, int m, int a[20][20], int *b, int h)
{
int i, j, k; int c[20][20];
for (i = 0; i < n; i++)
for (j = 0; j < m; j++)
c[i][j] = a[i][j];
for (i = 1; i <= h; i++)
if (b[i] == 1)
{
if (i > n)
{
for (k = 0; k < n; k++)
{
for (j = 0; j < m; j++)
{
if (j == (i - n - 1)) c[k][j] = -a[k][j];
}
}
}
else if (i <= n)
{
for (k = 0; k < n; k++)
{
for (j = 0; j < m; j++)
{
if (k + 1 == i) c[k][j] = -a[k][j];
}
}
}
}
// for (i = 0; i < n; i++)
// {
// for (j = 0; j < m; j++)
// printf("%3d ", c[i][j]);
// printf("\n");
// }
si = 0;
for (i = 0; i < n; i++)
for (j = 0; j < m; j++)
si += c[i][j];
//printf("si = %lli\n", si);
if (si > sum) sum = si;
}
void black_magic(int n, int m, int a[20][20])
{
int i, j, b[40]; int h = m + n;
for (i = 0; i <= h; i++)
b[i] = 0;
while (b[0] == 0)
{
int k = h;
while (b[k] == 1) { b[k] = 0; k--; }
b[k] = 1;
// for (i = 0; i <= h; i++)
// printf("%d ", b[i]);
// printf("\n");
if (b[0] == 1) break;
lets_sum(n, m, a, b, h);
// printf("%lli\n", sum);
//getchar();
}
//printf("%lli\n", sum);
output(sum);
}
int main(void)
{
int n, m, a[20][20];
readfrom(&n, &m, a);
black_magic(n, m, a);
return (0);
}