Pagini recente » jc2016/runda-1/solutii | Cod sursa (job #1113918) | Cod sursa (job #1541666) | Cod sursa (job #1013779)
#include <fstream>
using namespace std;
ifstream fin("flip.in");
ofstream fout("flip.out");
int n,m,i,j,k,suma,min_l,min_c,linia,coloana;
long long sl[101],sc[101],a[101][101]; /* sl=suma.linii; sc=suma.coloane...ajuta la testarea a carei valori e mai mica*/
int main()
{
fin>>n>>m;
for(i=1;i<=n;i++)
for(j=1;j<=m;j++)
fin>>a[i][j];
/*acum eu vreau sa fac suma pentru fiecare linie. Le pun in vectorul sl
si la valoarea cea mai mica schimb semnele pe coloana aia */
for(j=1;j<=m;j++)
{
++k;
for(i=1;i<=n;i++)
sc[k]+=a[i][j];
}
//resetez variabila k pentru scrierea de la inceputul vectorului sc
k=0;
/* acum fac suma pentru linii si le pun in vectorul sc si la valoarea cea mai mica schimb */
for(i=1;i<=n;i++)
{
++k;
for(j=1;j<=n;j++) sl[k]+=a[i][j];
}
//acum trebuie sa vad cum fac sa aflu care e mai mica la linii.
min_c=sc[1];
for (i=2;i<=n;i++)
if(sc[i]<min_c)
{
min_c=sc[i];
coloana=i;
}
//acum la coloane
min_l=sl[1];
for(j=2;j<=m;j++)
if(min_l>sl[j])
{
min_l=sl[j];
linia=j;
}
//acum schimbam valorile de pe linia si coloana cea mai mica cu opusul fiecarui numar
for(i=1;i<=n;i++)
a[i][linia]=-(a[i][linia]);
for(j=1;j<=m;j++)
a[coloana][j]=-(a[coloana][j]);
//acum facem suma
for(i=1;i<=n;i++)
for(j=1;j<=m;j++)
suma+=a[i][j];
fout<<suma;
fout.close();
return 0;
}