Cod sursa(job #2238504)

Utilizator sorgeTrifescu Stefan-Octavian sorge Data 6 septembrie 2018 01:05:54
Problema Jocul Flip Scor 10
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.5 kb
#include <iostream>
#include <vector>
#include <fstream>
using namespace std;

ifstream in("flip.in");
ofstream out("flip.out");

void initializeMatrix(vector<vector<int> > &matrix,int n,int m){

    vector<int> line;

    for(int i=0;i<m;++i)
        line.push_back(0);

    for(int j=0;j<n;++j)
        matrix.push_back(line);

}
void readData(vector<vector<int> > &matrix,int &n,int &m){

    in>>n>>m;
    initializeMatrix(matrix,n,m);
    for(int i=0;i<n;++i)
        for(int j=0;j<m;++j)
            in>>matrix[i][j];

}
int totalSum(vector<vector<int> > matrix,int n,int m){

    int sum=0;

    for(int i=0;i<n;++i)
        for(int j=0;j<m;++j)
            sum+=matrix[i][j];

    return sum;
}
void changeLineAndColumn(vector<vector<int> > &matrix,int n,int m,int i,int j){

    for(int k=0;k<m;++k)
        matrix[i][k]*=-1;

    for(int f=0;f<n;++f)
        matrix[f][j]*=-1;

    matrix[i][j]*=-1;
}
int maxSum(vector<vector<int> > matrix,int n,int m){
    int maximum=0;

    for(int i=0;i<n;++i)
        for(int j=0;j<m;++j)
    {
        int firstsum=totalSum(matrix,n,m);
        if(firstsum>maximum)
            maximum=firstsum;
        changeLineAndColumn(matrix,n,m,i,j);
        int secondsum=totalSum(matrix,n,m);
        if(secondsum>maximum)
            maximum=secondsum;

    }

    return maximum;
}
int main()
{
    vector<vector<int> > matrix;
    int n,m;
    readData(matrix,n,m);
    out<<maxSum(matrix,n,m);
    return 0;
}