Pagini recente » Cod sursa (job #2050258) | Cod sursa (job #2632946) | Cod sursa (job #166328) | Cod sursa (job #1370714) | Cod sursa (job #1858133)
#include <iostream>
#include <fstream>
#include <math.h>
using namespace std;
ifstream f("flip.in");
ofstream g("flip.out");
class flipClass{
private:
int n,m,perm, perv_v[33],cont;
long matrix[17][17];
long maxi;
public:
flipClass(){
perm=0;
cont = 1;
maxi = 0;
}
void read(){
f>>m;
f>>n;
for(int i=1;i<=m;i++)
{
for(int j=1; j<=n; j++)
{
f>>matrix[i][j];
}
}
}
void show(){
for(int i=1;i<=m;i++)
{
for(int j=1; j<=n; j++)
{
cout<<matrix[i][j]<<" ";
}
cout<<'\n';
}
cout<<'\n';
}
void toggle_line (int line)
{
matrix[line][0]=!matrix[line][0];
cont=1;
}
void toggle_col (int col)
{
matrix[0][col]=!matrix[0][col];
cont=1;
}
void do_p(){
for(int i=1;i<=m;i++){
if(sum_line(i)<0) toggle_line (i);
}
for(int i=1;i<=n;i++){
if(sum_col(i)<0) toggle_col (i);
}
}
long sum_line(int line){
long sum=0;
for(int i=1;i<=n;i++) sum += ((matrix[line][0]^matrix[0][i]) ? matrix[line][i]*(-1) : matrix[line][i]);
//cout<<(((matrix[line][0]^matrix[0][i]) ? matrix[line][i]*(-1) : matrix[line][i]))<<" ";}
return sum;
}
long sum_col(int col){
long sum=0;
for(int i=1;i<=m;i++)
sum += ((matrix[i][0]^matrix[0][col]) ? matrix[i][col]*(-1) : matrix[i][col]) ;
//cout<<(((matrix[i][0]^matrix[0][col]) ? matrix[i][col]*(-1) : matrix[i][col]))<<" ";}
return sum;
}
int one_more_time(){
int cp = cont;
cont = 0;
return cp;
}
long final_sum(){
long fs=0;
for(int i=1;i<=m;i++){
fs += sum_line(i);
}
return fs;
}
};
int main()
{
flipClass flip;
flip.read();
//flip.show();
while(flip.one_more_time())
{
flip.do_p();
}
g<<flip.final_sum();
}