Pagini recente » Cod sursa (job #1839986) | Cod sursa (job #1366309) | Cod sursa (job #950958) | Cod sursa (job #319290) | Cod sursa (job #1201774)
#include<iostream>
#include<fstream>
using namespace std;
int find_min(int a[],int n) {
int pos=1;
for(int i=2;i<=n;i++) {
if(a[i]<a[pos]) pos=i;
}
return pos;
}
int main()
{
ofstream fout ("flip.out");
ifstream fin ("flip.in");
int r[20]={0},c[20]={0},i,j,temp,n,m,a[20][20]={0},sum_r=0,sum_c=0;
int min_r,min_c,pos_r,pos_c;
fin>>n>>m;
for(i=1;i<=n;i++) {
for(j=1;j<=m;j++) fin>>a[i][j];
}
for(i=1;i<=n;i++) {
temp=0;
for(j=1;j<=m;j++) temp+=a[i][j];
r[i]=temp;
sum_r+=r[i];
}
for(j=1;j<=m;j++) {
temp=0;
for(i=1;i<=n;i++) temp+=a[i][j];
c[j]=temp;
sum_c+=c[j];
}
while(true) {
pos_r=find_min(r,n);
pos_c=find_min(c,m);
if(r[pos_r]>=0 && c[pos_c]>=0) break;
else if(r[pos_r]<=c[pos_c]) {
if(sum_r+(-2*r[pos_r])>sum_c) {
sum_r=sum_r+(-2*r[pos_r]);
sum_c=sum_r;
r[pos_r]=-1*r[pos_r];
for(i=1;i<=m;i++) {
c[i]=c[i]+(-2*a[pos_r][i]);
}
}
else break;
}
else if(c[pos_c]<=r[pos_r]) {
if(sum_c+(-2*c[pos_c])>sum_r) {
sum_c=sum_c+(-2*c[pos_c]);
sum_r=sum_c;
c[pos_c]=-1*c[pos_c];
for(i=1;i<=n;i++) {
r[i]=r[i]+(-2*a[i][pos_c]);
}
}
else break;
}
}
fout<<sum_r;
// system("pause");
return 0;
}