Pagini recente » infoarena - comunitate informatica, concursuri de programare | Cod sursa (job #2893256) | Cod sursa (job #2035833) | info-arena 2.0 | Cod sursa (job #222346)
Cod sursa(job #222346)
#include<fstream>
#include<iostream>
using namespace std;
long a[17][17];
int n,m;
void determina()
{long s=0,s_new=0;
int i,j;
for(i=1;i<=n;i++)
{s=0;s_new=0;
for(j=1;j<=m;j++)s+=a[i][j];
for(j=1;j<=m;j++)s_new+=a[i][j]*(-1);
a[i][0]=s_new-s;
}
for(j=1;j<=m;j++)
{s=0;s_new=0;
for(i=1;i<=n;i++)s+=a[i][j];
for(i=1;i<=n;i++)s_new+=a[i][j]*(-1);
a[0][j]=s_new-s;
}
}
int main()
{
int i,j;
ifstream f("flip.in");
f>>n>>m;
for(i=1;i<=n;i++)
for(j=1;j<=m;j++)
f>>a[i][j];
f.close();
long max;
int lc=0,ind=0;
determina();
max=a[1][0];
for(i=1;i<=n;i++)if(a[i][0]>max)max=a[i][0],lc=0,ind=i;
for(j=1;j<=m;j++)if(a[0][j]>max)max=a[0][j],lc=1,ind=j;
while(max>0)
{
if(lc==0)for(i=1;i<=m;i++)a[ind][i]=a[ind][i]*(-1);
else for(i=1;i<=n;i++)a[i][ind]=a[i][ind]*(-1);
determina();
max=a[1][0];
for(i=1;i<=n;i++)if(a[i][0]>max)max=a[i][0],lc=0,ind=i;
for(j=1;j<=m;j++)if(a[0][j]>max)max=a[0][j],lc=1,ind=j;
}
long s=0;
ofstream g("flip.out");
for(i=1;i<=n;i++)
for(j=1;j<=m;j++)
s+=a[i][j];
g<<s;
g.close();
return 0;}