Pagini recente » Cod sursa (job #2647647) | Cod sursa (job #560051) | Cod sursa (job #1132756) | Cod sursa (job #1991757) | Cod sursa (job #446098)
Cod sursa(job #446098)
#include <stdio.h>
#include <stdlib.h>
int **a,m,n;
long long suma()
{
int i,j;
long long r=0;
for (i=0;i<n;i++)
for (j=0;j<m;j++)
r+=a[i][j];
return r;
}
long long sumaL(int l)
{
int i;
long long r=0;
for (i=0;i<m;i++)
r+=a[l][i];
return r;
}
long long sumaC(int c)
{
int i;
long long r=0;
for (i=0;i<n;i++)
r+=a[i][c];
return r;
}
void flipL(int l)
{
int i;
for (i=0;i<m;i++)
a[l][i]*=(-1);
}
void flipC(int c)
{
int i;
for (i=0;i<n;i++)
a[i][c]*=(-1);
}
int main()
{
int i,j;
FILE *in,*out;
in=fopen("flip.in","r");
out=fopen("flip.out","w");
fscanf(in,"%d %d",&n,&m);
a=malloc(n*sizeof(int *));
for (i=0;i<n;i++)
{
a[i]=malloc(m*sizeof(int));
for (j=0;j<m;j++)
fscanf(in,"%d",&a[i][j]);
}
for (i=0;i<n;i++)
{
for (j=0;j<m;j++)
printf("%d ",a[i][j]);
printf("\n");
}
int gata=0,cont;
while (!gata)
{
cont=0;
for (i=0;i<n;i++)
if(sumaL(i)<0)
{
flipL(i);
printf("flip linia %d\n",i);
cont=1;
}
for (j=0;j<m;j++)
if (sumaC(j)<0)
{
flipC(j);
cont=1;
printf("flip coloana %d\n",j);
}
if (cont==0)
gata=1;
}
fprintf(out,"%d",suma());
return 0;
}