Pagini recente » Cod sursa (job #2473684) | Cod sursa (job #1570682) | Cod sursa (job #739026) | Cod sursa (job #1726559) | Cod sursa (job #670724)
Cod sursa(job #670724)
#include<iostream>
#include<fstream>
using namespace std;
int main(){
ifstream ifile;
ofstream ofile;
int a,b,i,j,min=-1,poz,ok=1,suma=0,m[20][16],l[36]; // l memoreaza sumele pe linii + coloane(indice a+j)
ifile.open("flip.in");
ifile>>a>>b;
for(i=1; i<=a; i++){
for(j=1; j<=b; j++){
ifile>>m[i][j];
}
}
ifile.close();
while(ok){
for(i=1; i<=a+b; i++) l[i]=0; //resetam vectorul de sume linie/coloana
for(i=1; i<=a; i++){
for(j=1; j<=b; j++){
l[i]+=m[i][j];
l[a+j]+=m[i][j]; //sumele pe coloana puse in acelasi vector
}
}
//for(i=1; i<=a+b; i++) cout<<l[i]<<" ";
//parcurgem vectorul sumelor si vedem care e minimul, dupa care refacem calculele
min = l[1];
poz = 1;
for(i=2; i<=a+b; i++){
if(min>l[i]){
min = l[i];
poz = i;
}
}
//cout<<"min/poz="<<min<<" "<<poz<<endl;
if(min<0){ //rearanjam
//calculam ce recalculam: col/linie in functie de indice, poz>a => coloane
if(poz<=a){//recalculam o linie
for(i=1; i<=b; i++) m[poz][i] = -m[poz][i];
} else { //-"- coloana
poz -= a;
for(i=1; i<=a; i++) m[i][poz] = -m[i][poz];
}
} else ok = 0;
} //exit while
for(i=1; i<=a; i++) suma += l[i];
//cout<<"suma="<<suma<<endl;
ofile.open("flip.out");
ofile<<suma;
ofile.close();
//system("PAUSE");
return 0;
}