Cod sursa(job #1843044)

Utilizator pibogaBogdan piboga Data 8 ianuarie 2017 00:06:45
Problema Elimin Scor 10
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.65 kb
#include <cstdio>
#include <algorithm>

using namespace std;

/*
ifstream fin ("elimin.in");
ofstream fout("elimin.out");*/

int n,m,r,c,N,M,u,k,mx,i,j,nr,s,ss;
int mk[7500],t[7500],a[20][7500];

//a[15][7294]

int main()
{
  //  fin >> n >> m >> r >> c ;

    freopen("elimin.in","r",stdin);
    freopen("elimin.out","w",stdout);

    scanf("%i",&n);
    scanf("%i",&m);
    scanf("%i",&r);
    scanf("%i",&c);

    if (n>m)
    {
        for (j=1;j<=n;++j)
        {
            for (i=1;i<=m;++i)
            {
                    scanf("%i",&a[i][j]);
            }
        }

        swap (n,m);
        swap (r,c);
    }

    else

    {
        for (i=1;i<=n;++i)
        {
            for (j=1;j<=m;++j)
            {
                    scanf("%i",&a[i][j]);
            }
        }


    }

    nr=(1<<n)-1;

    for (k=0;k<=nr;++k)
    {
        u=0;
        for (i=1;i<=n;++i)
        {
            u+=((k&(1<<i))!=0);
        }

        ss=0;

        if (u==r)
        {
            for (i=1;i<=n;++i)
            {
                if ((k&(1<<(i-1)))==0)
                {
                    for (j=1;j<=m;++j)
                    {
                        t[j]+=a[i][j];
                    }
                }
            }

            sort (t+1,t+m+1);

            for (j=m;j>=c+1;--j)
            {
                ss+=t[j];
                t[j]=0;
            }

            for (j=c;j>1;--j)
            {
                t[j]=0;
            }

            if (ss>mx) mx=ss;




        }
    }




  //  fout <<mx;

    printf("%i",mx);

    return 0;
}