Pagini recente » Cod sursa (job #1042494) | Cod sursa (job #2853641) | Cod sursa (job #625141) | Cod sursa (job #582824) | Cod sursa (job #2640613)
#include <iostream>
#include <fstream>
//JOCUL FLIP
using namespace std;
int n,m;
int** readBoard(ifstream &inputFile){
int height;
int width;
inputFile>>height>>width;
n=height;
m=width;
int** board= new int*[n];
for (int i = 0; i<n; i++){
board[i]=new int[m];
for(int j = 0; j<m; j++){
inputFile>>board[i][j];
}
}
return board;
}
void printBoard(int** board, int n, int m, ofstream &outputFile){
int Result=0;
for(int i = 0; i < n ; i++){
for(int j = 0; j < m; j++){
Result=Result+board[i][j];
cout<<board[i][j]<<" ";
}
cout<<endl;
}
outputFile<<Result;
}
void changeLinePolarity(int** board, int lineIndex){
for(int j = 0 ; j < m ; j++){
board[lineIndex][j] = -board[lineIndex][j];
}
}
void changeColumnPolarity(int** board, int columnIndex){
for(int i = 0 ; i < n ; i++){
board[i][columnIndex] = -board[i][columnIndex];
}
}
int solveBoard(int** board, ofstream &outputFile){
int negPolarity = 0;
int posPolarity = 0;
for(int i = 0; i<n;i++){
for(int j = 0; j<m ;j++){
if(board[i][j]<0){
negPolarity+=board[i][j];
}else{
posPolarity+=board[i][j];
}
if (abs(negPolarity)>abs(posPolarity)){
changeLinePolarity(board, i);
}
negPolarity = 0;
posPolarity = 0;
}
}
for(int j = 0; j<m ;j++){
for(int i = 0; i<n ;i++){
if(board[i][j]<0){
negPolarity+=board[i][j];
}else{
posPolarity+=board[i][j];
}
if (abs(negPolarity)>abs(posPolarity)){
changeColumnPolarity(board, j);
}
negPolarity = 0;
posPolarity = 0;
}
}
printBoard(board,n,m,outputFile);
}
int main()
{
ifstream f("flip.in");
ofstream g("flip.out");
int **board;
board = readBoard(f);
solveBoard(board,g);
return 0;
}