Pagini recente » Cod sursa (job #2510667) | Cod sursa (job #2402560) | Cod sursa (job #1622481) | Cod sursa (job #528668) | Cod sursa (job #51399)
Cod sursa(job #51399)
#include <iostream>
#include <fstream>
using namespace std;
long a[17][17];
int n,m;
long sumalin(int x)
{
long s;
int i;
s=0;
for (i=1; i<=m; i++)
s+=a[x][i];
return s;
}
long sumacol(int x)
{
long s;
int i;
s=0;
for (i=1; i<=n; i++)
s+=a[i][x];
return s;
}
int main()
{
//FILE *f1;
//f1=fopen("flip.in", "r");
ifstream f1("flip.in");
ofstream f2("flip.out");
int i, j, k;
long long su;
bool stop;
//fscanf(f1, "%d %d", &n, &m);
f1>>n>>m;
for (i=1; i<=n; i++)
for (j=1; j<=m; j++)
f1>>a[i][j];
//fscanf(f1, "%d", &a[i][j]);
for (i=1; i<=n; i++)
{
a[i][0]=sumalin(i);
//f2<<a[i][0]<<" ";
}
//f2<<endl;
for (i=1; i<=m; i++)
{
a[0][i]=sumacol(i);
//f2<<a[0][i]<<" ";
}
//pana aici verificat :P
stop=false;
while (!stop) {
stop=true;
for (i=1; i<=n; i++)
if (a[i][0]<0) {
stop=false;
//f2<<a[i][0]<<" ";
a[i][0]*=-1;
//f2<<a[i][0]<<endl;
for (j=1; j<=m; j++) {
a[0][j]=a[0][j]-2*a[i][j];
a[i][j]*=-1; //linia asta poate fii scoasa
}
}
for (i=1; i<=m; i++)
if (a[0][i]<0) {
stop=false;
//f2<<a[0][i];
a[0][i]*=-1;
//f2<<a[0][i];
for (j=1; j<=n; j++) {
a[j][0]=a[j][0]-2*a[j][i];
a[j][i]*=-1;
}
}
}
// for (i=0; i<=n; i++) {
// for (j=0; j<=m; j++)
// f2<<a[i][j]<<" ";
// f2<<endl;
// }
// f2<<endl;
stop=false;
while (!stop) {
stop=true;
for (i=1; i<=n; i++)
for (j=1; j<=m; j++)
if ((a[i][0] + a[0][j] - 2 * a[i][j]) < 0) {
// f2<<i<<" "<<j<<" "<<endl;
stop=false;
a[0][j]=(-1)*a[0][j]+2*a[i][j];
a[i][0]=(-1)*a[i][0]+2*a[i][j];
for (k=1; k<=n; k++)
a[k][j]*=-1;
for (k=1; k<=m; k++)
a[i][k]*=-1;
// for (i=0; i<=n; i++) {
// for (j=0; j<=m; j++)
// f2<<a[i][j]<<" ";
// f2<<endl;
// }
}
}
/*for (i=1; i<=n; i++) {
for (j=1; j<=m; j++)
f2<<a[i][j]<<" ";
f2<<endl;
}*/
su=0;
for (i=1; i<=n; i++)
for (j=1; j<=m; j++)
su+=a[i][j];
//su=0;
//su+=a[n][m];
f2<<su<<endl;
//fclose(f1);
f1.close();
f2.close();
return 0;
}