Pagini recente » Cod sursa (job #2949092) | Monitorul de evaluare | Cod sursa (job #350167) | Monitorul de evaluare | Cod sursa (job #790145)
Cod sursa(job #790145)
#include <fstream>
using namespace std;
int a[16][16],n=0,m=0,sum=0;
ifstream f("flip.in");
ofstream g("flip.out");
void cit()
{
int i,j;
f>>n>>m;
for(i=0;i<n;i++)
for(j=0;j<m;j++)
f>>a[i][j];
f.close();
}
void suma()
{
int i,j;
for(i=0;i<n;i++)
for(j=0;j<m;j++)
sum+=a[i][j];
}
void rezolv()
{
int i,j;
long *oriz = (long*)calloc(n,sizeof(long));
long *vert = (long*)calloc(m,sizeof(long));
for(i = 0; i < n; i++)
{
for(j = 0; j < m; j++)
{
oriz[i] += a[i][j];
vert[j] += a[i][j];
}
}
for(i = 0; i<n;i++)
{
long sumNow = a[i][0];
for(j=1;j<m;j++)
{
sumNow+=a[i][j];
}
long gain = 0;
for(j=0;j<m;j++)
{
gain += vert[j] - ((vert[j] - a[i][j])+((-1)*a[i][j]));
}
if(gain > 0)
{
printf("change line %d\n",i+1);
for(j=0;j<m;j++)
{
a[i][j]*=(-1);
oriz[i] += a[i][j];
vert[j] = (vert[j] -((-1)*a[i][j]))+a[i][j];
}
}
}
/*
for(j = 0; j<m;j++)
{
long sumNow = a[0][j];
long sumIfChange = (-1)*a[0][j];
for(i=1;i<n;i++)
{
sumNow+=a[i][j];
sumIfChange += (-1)*a[i][j];
}
if(sumNow < sumIfChange)
{
for(i=0;i<n;i++)
a[i][j]*=(-1);
}
}*/
suma();
g<<sum;
printf("%d",sum);
}
int main()
{
cit();
rezolv();
g.close();
getchar();
return 0;
}