Cod sursa(job #557036)

Utilizator RoCoderRo COder RoCoder Data 16 martie 2011 13:51:24
Problema Jocul Flip Scor 30
Compilator c Status done
Runda Arhiva de probleme Marime 1.11 kb
#include <stdio.h>

int matrix[16][16];
int mat[16][16];
int v[32];
int n, m;
int maxim;

void max_matrix(int k)
{
    int i, j, l, s1=0, ok;

    for(i=0; i<n; i++)
        for(j=0; j<m; j++)
        {
            ok=0;

            for (l=0; l<k; l++)
                if(v[l]-1==i || v[l]-n-1==j) ok++;

            if(ok==1) s1+=matrix[i][j]*(-1);
            else
                s1+=matrix[i][j];

            ok=0;
        }

    if(s1>maxim) maxim = s1;

}

void combinari(int n, int k, int i, int r)
{
    int j;

    if(i==k)
    {
        max_matrix(k);
        return;
    }

    for(j=r; j<=n; j++)
    {
        v[i]=j;
        combinari(n, k, i+1, j+1);
    }

}

int main ()
{
    int i, j;

    FILE *fi, *fo;
    fi=fopen("flip.in","r");
    fo=fopen("flip.out","w");

    fscanf(fi,"%d %d", &n, &m);

    for(i=0; i<n; i++)
        for(j=0; j<m; j++)
            fscanf(fi,"%d", &matrix[i][j]);

    for(i=1; i<n+m; i++)
        combinari(n+m, i, 0, 1);

    printf("%d", maxim);
    fprintf(fo,"%d", maxim);

    //fclose(fi);
    fclose(fo);
}