Cod sursa(job #3217963)

Utilizator AlexSerban21Serban Alexandru AlexSerban21 Data 25 martie 2024 12:19:46
Problema Elimin Scor 50
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 1.33 kb
#include <fstream>
#include <vector>
#include <bitset>
#include <algorithm>
using namespace std;
ifstream fin ("elimin.in");
ofstream fout ("elimin.out");
vector <vector <int>> v;
int maxim,i,j,n,m,l,c,fr[7295];
bitset <7295> viz;
void f (int pas,int ant)
{
    if (pas==l+1)
    {
        int sum=0;
        for (int j=1; j<=m; j++)
            fr[j]=0;
        for (int i=1; i<=n; i++)
        {
            if (viz[i])
                continue;
            for (int j=1; j<=m; j++)
                fr[j]+=v[i][j];
        }
        sort (fr+1,fr+m+1);
        for (int j=c+1; j<=m; j++)
            sum+=fr[j];
        if (sum>maxim)
            maxim=sum;
    }
    else
    {
        for (int i=ant+1; i<=n; i++)
        {
            f (pas,i);
            viz[i]=1;
            f (pas+1,i);
            viz[i]=0;
        }
    }
}
int main()
{
    fin>>n>>m>>l>>c;
    if (n<=m)
    {
        v.resize (n+1,vector <int> (m+1,0));
        for (i=1; i<=n; i++)
        {
            for (j=1; j<=m; j++)
                fin>>v[i][j];
        }
    }
    else
    {
        v.resize (m+1,vector <int> (n+1,0));
        for (i=1; i<=n; i++)
        {
            for (j=1; j<=m; j++)
                fin>>v[j][i];
        }
        swap (n,m);
    }
    f (1,0);
    fout<<maxim;
    return 0;
}