Cod sursa(job #2740259)

Utilizator maria.rotaruMaria Rotaru maria.rotaru Data 12 aprilie 2021 11:54:26
Problema Elimin Scor 50
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 1.26 kb
#include <fstream>
#include <algorithm>
#include <cmath>
#define NMAX 7294
#define MMAX 15

using namespace std;

ifstream cin("elimin.in");
ofstream cout("elimin.out");

int n,m,l,c,a[NMAX+1][MMAX+1], vc[MMAX+1], rez[NMAX+1];

int main()
{
    cin>>m>>n>>l>>c;
    int smax=-1;

    if (min(n,m)!=n)
    {
        for (int i=1; i<=m; i++)
            for (int j=1; j<=n; j++)
                cin>>a[j][i];
        swap(n,m), swap(l,c);
    }
    else
    {
        for (int i=1; i<=m; i++)
            for (int j=1; j<=n; j++)
                cin>>a[i][j];
    }


    for (int i=1; i<=(1<<n)-1; i++)
    {
        int s=0;
        for(int j=1; j<=m; j++)
            vc[j]=0;
        for (int j=1; j<=m; j++)
            rez[j]=0;
        for (int j=0; j<n; j++)
            if ( ((i>>j)&1) )
                vc[j+1]=1,s++;
        if (s==c)
        {
            for (int k=1; k<=m; k++)
                for (int j=1; j<=n; j++)
                    if (!vc[j])
                        rez[k]+=a[k][j];
            sort(rez+1, rez+m+1);
            int sm=0;
            for (int j=l+1; j<=m; j++)
                sm+= rez[j];
            if (sm>smax)
                smax=sm;

        }

    }

    cout<<smax;
    return 0;

}