Cod sursa(job #1363361)

Utilizator dumitrubogdanDumitru Bogdan Mihai dumitrubogdan Data 26 februarie 2015 22:03:03
Problema Jocul Flip Scor 10
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.48 kb
#include <iostream>
#include <stdio.h>

using namespace std;

    long a[17][17];
    int cx[17],cy[17];
    int x,y;
    long Smax,Sinit;

void Afisare_Gen(int v[], int lim){
    for(int i=0; i<lim; i++){
        printf("%d",v[i]);
    }
    printf("\n");
}

void Sum_Max(){
    int i,j,S=Sinit;
    for(i=0;i<x;i++){
        for(j=0;j<y;j++){
            if(cx[i]!=cy[j] ){
                S-=2*a[i][j];
            }
        }
    }
    if(S>Smax)
        Smax=S;
}

void Gen(int xsauy, int contor){
    switch (xsauy) {
        case 1 : {
            if(contor >= x){
                Gen(2,0);
            }
            else {
                cx[contor]=0;
                Gen(1,contor+1);
                cx[contor]=1;
                Gen(1,contor+1);
            }
            break;
        }
        case 2 : {
            if(contor >= y){
                Sum_Max();
            }
            else {
                cy[contor]=0;
                Gen(2,contor+1);
                cy[contor]=1;
                Gen(2,contor+1);
            }
            break;
        }
    }
}


int main()
{
    FILE *f=fopen("flip.in","r");
    FILE *g=fopen("flip.out","w");
    fscanf(f,"%d%d",&y,&x);
    for(int i=0; i<y; i++){
        for(int j=0; j<x; j++){
            fscanf(f,"%d",&a[i][j]);
            Sinit+=a[i][j];
        }
    }
    Gen(1,0);
//    cout<<Smax;
    fprintf(g,"%d",Smax);
    fclose(f);
    fclose(g);
    return 0;
}