Cod sursa(job #2426864)

Utilizator andreea_1998andreea bianca andreea_1998 Data 29 mai 2019 18:58:48
Problema Jocul Flip Scor 0
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 1.77 kb
#include <iostream>
#include<fstream>
using namespace std;
ifstream f("flip.in");
ofstream g("flip.out");
struct punct
{
    int x,y;
};
int suma(int n,int m,int a[17][17])
{
    int suma=0;
    for(int i=1;i<=n;i++)
    for(int j=1;j<=m;j++)
    suma+=a[i][j];
    return suma;
}
void swich(int n,int m, int a[17][17],int nr, char c)
{

    if(c=='c')
    {
         for(int j=1;j<=n;j++)
        {
            a[j][nr]*=-1;
        }
    }
    else
    if(c=='l')
    {
         for(int j=1;j<=m;j++)
        {
            a[nr][j]*=-1;
        }
    }
}
int verifica(int x,int v[],int n)
{
    for(int i=1;i<=n;i++)
    if(v[i]==x)
    return 1;
    return 0;
}
punct maxim(int n,int m,int a[17][17],int ex[],int *nr)
{
    int max=0;
    punct p;
    for(int i=1;i<=n;i++)
    {
        for(int j=1;j<=m;j++)
        if(a[i][j]<max&&verifica(a[i][j],ex,*nr)==0)
        {
            max=a[i][j];
            p.x=i;
            p.y=j;
        }
    }
    (*nr)++;
    ex[(*nr)]=max;
    return p;
}
int main()
{
    int n=0,m=0,s=0,a[17][17],ex[500],nr=0,x1,x2;
    punct p;
    f>>n>>m;
    for(int i=1;i<=n;i++)
    {
        for(int j=1;j<=m;j++)
        f>>a[i][j];
    }
    s=suma(n,m,a);
    while(1)
    {
        p=maxim(n,m,a,ex,&nr);
        swich(n,m,a,p.x,'l');
        x1=suma(n,m,a);
        swich(n,m,a,p.x,'l');
        swich(n,m,a,p.y,'c');
        x2=suma(n,m,a);
        swich(n,m,a,p.y,'c');
        if(x1>s||x2>s)
        {
            if(x1>x2)
            {
                swich(n,m,a,p.x,'l');
                s=x1;
            }
        else
        {
            s=x2;
              swich(n,m,a,p.y,'c');
        }
        }
        else
        break;
    }
    g<<s;
    return 0;
}