Cod sursa(job #2116495)

Utilizator Mihai145Oprea Mihai Adrian Mihai145 Data 27 ianuarie 2018 18:14:44
Problema Elimin Scor 40
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.08 kb
#include <bits/stdc++.h>
using namespace std;
ifstream fin("elimin.in");
ofstream fout("elimin.out");
int n, m, l, c, nrc, st[10002], a[10002][10002], lin[10002], smax;
void solution()
{
    memset(lin,0,sizeof(lin));
    int i, j, sm=0;
    for(i=1; i<=n; i++)
        for(j=1; j<=m; j++)
            if(st[j]==0)
                lin[i]+=a[i][j];
    sort(lin+1,lin+n+1);
    for(i=l+1; i<=n; i++)
        sm+=lin[i];
    smax=max(smax,sm);
}
void bk(int p)
{
    for(int i=0; i<=1; i++)
    {
        nrc+=i;
        st[p]=i;
        if(p==m)
        {
            if(nrc==c)
                solution();
        }
        else if(nrc<=c) bk(p+1);
        nrc-=i;
        st[p]=0;
    }
}
int main()
{
    int i, j;
    fin>>n>>m>>l>>c;
    if(n>=m)
    {
        for(i=1; i<=n; i++)
            for(j=1; j<=m; j++)
                fin>>a[i][j];
        bk(1);
    }
    else
    {
        for(i=1; i<=n; i++)
            for(j=1; j<=m; j++)
                fin>>a[j][i];
        swap(n,m);
        bk(1);
    }
    fout<<smax<<'\n';
    return 0;
}