Pagini recente » Cod sursa (job #1384094) | Cod sursa (job #2569359) | Cod sursa (job #2497957) | Cod sursa (job #1524390) | Cod sursa (job #52514)
Cod sursa(job #52514)
#include <stdio.h>
#define dim 16
int n, m;
long s=0, a[dim][dim];
void cit()
{
int j;
FILE *f=fopen("flip.in", "r");
fscanf(f, "%d %d", &n, &m);
for (int i=0; i<n; i++)
{
for (j=0; j<m; j++) fscanf(f, "%ld ", &a[i][j]);
fscanf(f, "\n");
}
fclose(f);
}
void actualizare()
{
int i, j;
for (i=0; i<n; i++) a[i][m]=0;
for (j=0; j<m; j++) a[n][j]=0;
for (i=0; i<n; i++)
for (j=0; j<m; j++)
{
a[n][j]+=a[i][j];
a[i][m]+=a[i][j];
}
}
void comutare(int el, int lin)
{
int i;
if (lin==1) for (i=0; i<m; i++) a[el][i]*=-1;
else for (i=0; i<n; i++) a[i][el]*=-1;
}
void cautare_minim()
{
int i, j, poz, lin;
long min;
min=2000000;
for (j=0; j<m; j++)
if (a[n][j]<min)
{
min=a[n][j];
poz=j;
lin=0;
}
for (i=0; i<n; i++)
if (a[i][m]<min)
{
min=a[i][m];
poz=i;
lin=1;
}
comutare(poz, lin);
}
int verificare()
{
int i, j;
actualizare();
for (j=0; j<m; j++)
if (a[n][j]<0) return 0;
for (i=0; i<n; i++)
if (a[i][m]<0) return 0;
return 1;
}
void suma()
{
int i, j;
for (i=0; i<n; i++)
s+=a[i][m];
}
void tip()
{
FILE *f=fopen("flip.out", "w");
fprintf(f, "%ld", s);
fclose(f);
}
int main()
{
cit();
while (!verificare()) cautare_minim();
suma();
tip();
return 0;
}