Cod sursa(job #526273)

Utilizator maritimCristian Lambru maritim Data 27 ianuarie 2011 21:46:13
Problema Jocul Flip Scor 40
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.04 kb
#include<iostream>
using namespace std;

int A[17][17];
int n;
int m;
long int mar = -32000;

void citire(void)
{
     FILE *f = fopen("flip.in","r");
     
     fscanf(f,"%d %d",&n,&m);
     for(int i=1;i<=n;i++)
        for(int j=1;j<=m;j++)
           fscanf(f,"%d",&A[i][j]);
     
     fclose(f);
}

long int calc(void)
{
    long int S = 0;
    for(int i=1;i<=n;i++)
       for(int j=1;j<=m;j++)
          S += A[0][j]*A[i][0]*A[i][j];
    return S;
}

void calculare2(int k)
{
     if(k == m+1)
     {
       if(calc()>mar) mar = calc();
     }
     else
     {
     A[0][k] = 1;
     calculare2(k+1);
     A[0][k] = -1;
     calculare2(k+1);
     }
}

void calculare(int k)
{
    if(k == n+1)
    {
      calculare2(1);
    }
    else
    {
      A[k][0] = 1;
      calculare(k+1);
      A[k][0] = -1;
      calculare(k+1);
    }
}

int main()
{
    FILE *f = fopen("flip.out","w");
    
    citire();
    calculare(1);
    fprintf(f,"%ld",mar);
    
    fclose(f);
    return 0;
}