Pagini recente » Cod sursa (job #2942977) | Cod sursa (job #701496) | Cod sursa (job #1459452) | Cod sursa (job #2903603) | Cod sursa (job #2640682)
#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]*(-1);
}
}
void changeColumnPolarity(int** board, int columnIndex){
for(int i = 0 ; i < n ; i++){
board[i][columnIndex] = board[i][columnIndex]*(-1);
}
}
int solveBoard(int** board, ofstream &outputFile){
int negPolarity = 0;
int posPolarity = 0;
bool Solved = false;
while(!Solved){
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)){
Solved=false;
changeLinePolarity(board, i);
}else{
Solved=true;
}
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)){
Solved=false;
changeColumnPolarity(board, j);
}else{
Solved=true;
}
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;
}