Cod sursa(job #2055114)

Utilizator danielsociuSociu Daniel danielsociu Data 2 noiembrie 2017 20:49:20
Problema Jocul Flip Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.42 kb
#include <iostream>
#include <fstream>
#include <cmath>
using namespace std;

ifstream inf("flip.in");
ofstream oinf("flip.out");
void sumal(int v[][20],int x,int m){
    int s1=0,s2=0;
    for(int i=1;i<=m;i++){
        if(v[x][i]>0)
            s1+=v[x][i];
        else
            s2+=v[x][i];
    }
    if(s1<abs(s2)){
        for(int i=1;i<=m;i++)
            v[x][i]*=-1;
    }
}
void sumac(int v[][20],int x,int n){
    int s1=0,s2=0;
    for(int i=1;i<=n;i++){
        if(v[i][x]>0)
            s1+=v[i][x];
        else
            s2+=v[i][x];
    }
    if(s1<abs(s2))
        for(int i=1;i<=n;i++)
            v[i][x]*=-1;
}
void egalare(int a[][20],int n,int m,int b[][20]){
    for(int i=1;i<=n;i++)
        for(int j=1;j<=m;j++)
            b[i][j]=a[i][j];
}
void verif(int a[][20],int n,int m,int b[][20]){
    for(int i=1;i<=n;i++)
        for(int j=1;j<=m;j++)
            if(b[i][j]!=a[i][j])
                return 1;
    return 0;
}
int main()
{
    int n,m,a[20][20],s=0,b[20][20];
    inf>>n;inf>>m;
    for(int i=1;i<=n;i++)
        for(int j=1;j<=m;j++)
            inf>>a[i][j];
    do{
        egalare(a,n,m,b);
        for(int i=1;i<=n;i++)
            sumal(a,i,m);
        for(int i=1;i<=m;i++)
            sumac(a,i,n);
    }while(verif(a,n,m,b))

    for(int i=1;i<=n;i++)
        for(int j=1;j<=m;j++)
            s+=a[i][j];
    oinf<<s;
    return 0;
}