Cod sursa(job #1083546)

Utilizator tavi.belu1994FMI Belu Andrei Octavian tavi.belu1994 Data 16 ianuarie 2014 03:07:26
Problema Elimin Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.26 kb
#include <cstdio>
#include <algorithm>
FILE *f,*g;
using namespace std;

int i,j,n,m,N,M,maxx,suma,s[600];
int ap[20],a[600][600];

void backtr(int k, int X)
{
    if (k > m+1) return;
    if (X == M)
    {
        int i,j;
        for (i=1; i<=n; ++i)
        {
            s[i]=0;
            for (j=1; j<=m; ++j)
            {
                if (ap[j]==0) s[i]+=a[i][j];
            }
        }
        sort(s+1,s+n+1);
        suma=0;
        for (i=N+1; i<=n; ++i)
            suma+=s[i];
        if (suma>maxx)
            maxx=suma;
    }
    else
    {
        ap[k]=1;
        backtr(k+1,X+1);
        ap[k]=0;
        backtr(k+1,X);
    }
}
int main ()
{
    f=fopen("elimin.in","r");
    g=fopen("elimin.out","w");
    fscanf(f,"%d%d%d%d",&n,&m,&N,&M);
    if (n>=m)
    {
        for (i=1; i<=n; ++i)
            for (j=1; j<=m; ++j)
                fscanf(f,"%d",&a[i][j]);
    }
    else
    {
        int aux;
        aux = n;
        n = m;
        m = aux;
        aux = N;
        N = M;
        M = aux;
        for (j=1; j<=m; ++j)
            for (i=1; i<=n; ++i)
                fscanf(f,"%d",&a[i][j]);
    }
    backtr(1,0);
    fprintf(g,"%d",maxx);
    fclose(f);
    fclose(g);
    return 0;
}