Cod sursa(job #2371430)

Utilizator etienAndrone Stefan etien Data 6 martie 2019 17:35:39
Problema Jocul Flip Scor 30
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 1.47 kb
#include <fstream>
#include <iostream>
using namespace std;
ifstream fin("flip.in");
ofstream fout("flip.out");
int n,m,i,j,s;
int mat[17][17],ss;
bool numerge;
int sumlin(int l)
{
    int ii,s=0;
    for(ii=1;ii<=m;ii++)
        s+=mat[l][ii];
    return s;
}
int sumcol(int c)
{
    int ii,s=0;
    for(ii=1;ii<=n;ii++)
        s+=mat[ii][c];
    return s;
}
struct alegere
{
    char rez;
    int nr;
};
alegere x;
void cauta()
{
    int mim=1000000000;
    int ii;
    for(ii=1;ii<=m;ii++)
        if(sumcol(ii)<mim)
        {
            x.rez='C';
            x.nr=ii;
            mim=sumcol(ii);
        }
    for(ii=1;ii<=n;ii++)
        if(sumlin(ii)<mim)
        {
            x.rez='L';
            x.nr=ii;
            mim=sumlin(ii);
        }
    if(mim>=0)
        numerge=true;
}
void comuta()
{
    int ii;
    if(x.rez=='C')
    {
        for(ii=1;ii<=n;ii++)
        {
            mat[ii][x.nr]*=-1;
        }
    }
    else
    {
        for(ii=1;ii<=m;ii++)
        {
            mat[x.nr][ii]*=-1;
        }
    }
}
int suma;
int main()
{
    fin>>n>>m;
    for(i=1;i<=n;i++)
        for(j=1;j<=m;j++)
            {fin>>mat[i][j];
            ss+=mat[i][j];}
    while(7>5)
    {
        cauta();
        if(numerge)
            break;
        comuta();
        cout<<x.nr<<" "<<x.rez<<"\n";
    }
    for(i=1;i<=n;i++)
        for(j=1;j<=m;j++)
            suma+=mat[i][j];
    fout<<suma;
}