Cod sursa(job #1655987)

Utilizator badea_adi1999Badea Adrian Catalin badea_adi1999 Data 18 martie 2016 16:44:14
Problema Elimin Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.11 kb
#include <fstream>
#include <algorithm>
#define lmax 16
#define cmax 7300
using namespace std;
ifstream f("elimin.in");
ofstream g("elimin.out");
int n,m,l,c,sol,biti[(1<<lmax)];
int lin[lmax],col[cmax];
int v[lmax][cmax],sum;


int main()
{
    int i,j,k,i1,j1;
    f>>n>>m>>l>>c;

    if (n<=m)
        for (i=0;i<n;i++)
            for (j=0;j<m;j++)
                f>>v[i][j];
    else {
        for (i=0;i<n;i++)
            for (j=0;j<m;j++)
                f>>v[j][i];
        swap(n,m);swap(l,c);
    }
    for (i=0;i<(1<<lmax);i++)
        biti[i]=biti[i/2]+i%2;

    for (i=0;i<(1<<n);i++)
        if (biti[i]==l) {
            for (j=0;j<n;j++)
                lin[j]=((i&(1<<j))==0);

            for (j=0;j<m;j++)
                col[j]=0;
            for (i1=0;i1<n;i1++)
                if (lin[i1])
                    for (j=0;j<m;j++)
                        col[j]+=v[i1][j];
            sort(col,col+m);
            sum=0;
            for (j=m-1,k=m-c;k;k--,j--)
                sum+=col[j];
            sol=max(sol,sum);
        }
    g<<sol<<'\n';
    return 0;
}