Cod sursa(job #526310)

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

long int A[17][17];
int n;
int m;
int B[17];
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<=m;i++)
     {
         long int s1 = 0;
         long int s2 = 0;
         for(int j=1;j<=n;j++)
            s1 += B[j]*A[j][i];
         for(int j=1;j<=n;j++)
            s2 += B[j]*A[j][i]*-1;
         (s1>s2) ? S += s1 : S += s2;
     }
     return S;
}

void calculare(int k)
{
    if(k == n+1)
    {
      long int s = calc(); 
      if(s > mar) mar = s;
    }
    else
    {
      B[k] = 1;
      calculare(k+1);
      B[k] = -1;
      calculare(k+1);
    }
}

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