Cod sursa(job #1841325)

Utilizator pibogaBogdan piboga Data 5 ianuarie 2017 15:19:04
Problema Elimin Scor 30
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.37 kb
#include <fstream>
#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[20],t[20],a[20][7300];

//a[15][7294]

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

    M=m; N=n;
    n=min(M,N); //<=15
    m=max(M,N);

    nr=(1<<n)-1;

    for (i=1;i<=n;++i)
    {
        for (j=1;j<=m;++j)
        {
            fin >> a[i][j];
        }
    }


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

            ss=0;

            if (u==r)
            {
                for (i=1;i<=n;++i)
                {
                    if (k>>(i-1)&1)
                    {
                        mk[i]=k;
                    }
                }


                for (j=1;j<=m;++j)
                {
                    s=0;

                    for (i=1;i<=n;++i)
                        if (mk[i]!=k)
                            s+=a[i][j];

                    t[j]=s;

                }

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

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

                if (ss>mx) mx=ss;


            }
        }


    }

    fout <<mx;

    return 0;
}