Cod sursa(job #2116464)

Utilizator Mihai145Oprea Mihai Adrian Mihai145 Data 27 ianuarie 2018 17:37:34
Problema Elimin Scor 30
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.02 kb
#include <bits/stdc++.h>
using namespace std;
ifstream fin("elimin.in");
ofstream fout("elimin.out");
int n, m, l, c, smat, mat[8000][8000], smin=INT_MAX;
bool stl[8000], stc[8000];
int nrl, nrc;
void solutie()
{
    int i, j, sm=0;
    for(i=1; i<=n; i++)
        for(j=1; j<=m; j++)
            if(stl[i]==1 || stc[j]==1)
                sm+=mat[i][j];
    smin=min(smin,sm);
}
void btc(int p)
{
    for(int i=0; i<=1; i++)
    {
        nrc+=i;
        stc[p]=i;
        if(nrc==c) solutie();
        else if(p<m) btc(p+1);
        nrc-=i;
        stc[p]=0;
    }
}
void btl(int p)
{
    for(int i=0; i<=1; i++)
    {
        nrl+=i;
        stl[p]=i;
        if(nrl==l) btc(1);
        else if(p<n) btl(p+1);
        nrl-=i;
        stl[p]=0;
    }
}
int main()
{
    int i, j;
    fin>>n>>m>>l>>c;
    for(i=1; i<=n; i++)
        for(j=1; j<=m; j++)
        {
            fin>>mat[i][j];
            smat+=mat[i][j];
        }
    btl(1);
    fout<<smat-smin<<'\n';
    return 0;
}