Cod sursa(job #1850597)

Utilizator blackmanta45Andrei blackmanta45 Data 18 ianuarie 2017 19:32:38
Problema Jocul Flip Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 2.13 kb
#include <fstream>
using namespace std;
ifstream fin ("flip.in");
ofstream fout ("flip.out");
int n,m,k,i,j,slin,scol,s,v[17][17];
int actual (){
    for(int i=1;i<=n;i++){
        v[i][0]=0;
        for(int j=1;j<=m;j++)
            v[i][0]+=v[i][j];
    }
    for(int i=1;i<=m;i++){
        v[0][i]=0;
        for(int j=1;j<=n;j++)
            v[0][i]+=v[j][i];
    }
}
int afis () {
    for(int i=0;i<=n;i++){
        for(int j=0;j<=m;j++)
            fout<<v[i][j]<<" ";
        fout<<"\n";
    }
    fout<<"\n";
}
int col () {
    s=0;
    for(k=1;k<=n;k++){
        v[k][j]*=-1;
        s+=v[k][j];
    }
    if(s>=v[0][j]){
        actual();
    }
    else
        for(k=1;k<=n;k++)
            v[k][j]*=-1;
}
int lin () {
    s=0;
    for(k=1;k<=m;k++){
        v[i][k]*=-1;
        s+=v[i][k];
    }
    if(s>=v[i][0]){
        actual();
    }
    else
        for(k=1;k<=m;k++)
            v[i][k]*=-1;
}
int both () {
    scol=0;
    slin=0;
    for(k=1;k<=n;k++)
        v[k][j]*=-1;
    for(k=1;k<=m;k++)
        v[i][k]*=-1;
    for(k=1;k<=n;k++)
        scol+=v[k][j];
    for(k=1;k<=m;k++)
        slin+=v[i][k];
    if(scol>=v[0][j] && slin>=v[i][0]){
        actual();
    }
    else
        if(scol<v[0][j] && slin>=v[i][0] && (scol+slin)>=(v[0][j]+v[i][0])){
            actual();
        }
        else
            if( ((scol>=v[0][j] && slin<v[i][0]) || (scol<v[0][j] && slin>=v[i][0])) && (scol+slin)>=(v[0][j]+v[i][0])){
                actual();
            }
        else
            if(scol<v[0][j] && slin<v[i][0]){
                for(k=1;k<=n;k++)
                    v[k][j]*=-1;
                for(k=1;k<=m;k++)
                    v[i][k]*=-1;
            }

}

int main () {
    fin>>n>>m;
    for(i=1;i<=n;i++)
        for(j=1;j<=m;j++)
            fin>>v[i][j];
    actual();
    afis();
    for(i=1;i<=n;i++){
        for(j=1;j<=m;j++){
            both();
            col();
            lin();
        }
    }
    afis();
    s=0;
    for(i=1;i<=n;i++)
        s+=v[i][0];
    for(i=1;i<=n;i++)
        s+=v[0][i];
    fout<<s;

}