Cod sursa(job #3289632)

Utilizator Luca_georgescuLucageorgescu Luca_georgescu Data 27 martie 2025 18:15:06
Problema Elimin Scor 20
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 1.25 kb
#include <bits/stdc++.h>
#define int long long

using namespace std;

ifstream f("elimin.in");
ofstream g("elimin.out");

int n,m,c,r,maxi,solrows[1005],solcol[1005];
int a[1005][1005];

void select()
{
    int sum=0;
    for (int i=1; i<=n; i++ )
        if ( !solrows[i] )
            for (int j=1; j<=m; j++ )
                if ( !solcol[j] )
                    sum+=a[i][j];

    maxi=max(maxi,sum);
}

void backcol(int k, int cnt)
{
    if ( cnt==c )
        select();
    else
    {
        for (int i=k; i<=m; i++ )
        {
            if ( !solcol[i] )
            {
                solcol[i]=true;
                backcol(k+1,cnt+1);
                solcol[i]=false;
            }
        }
    }
}

void backrow(int k, int cnt)
{
    if ( cnt==r )
        backcol(1,0);
    else
    {
        for (int i=k; i<=n; i++ )
        {
            if ( !solrows[i] )
            {
                solrows[i]=true;
                backrow(k+1,cnt+1);
                solrows[i]=false;
            }
        }
    }
}

signed main()
{
    f >> n >> m >> r >> c;
    for (int i=1; i<=n; i++ )
        for (int j=1; j<=m; j++ )
            f >> a[i][j];

    backrow(1,0);

    g << maxi;
    return 0;
}