Cod sursa(job #3120935)

Utilizator andiRTanasescu Andrei-Rares andiR Data 9 aprilie 2023 16:11:24
Problema Elimin Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 1.19 kb
#include <iostream>
#include <fstream>
#include <algorithm>

using namespace std;
ifstream fin ("elimin.in");
ofstream fout ("elimin.out");
const int Nmax=85;

int n, m, l, c;
int mat[7294][7294], pc[7294], sol;
bool vl[Nmax];
void comb(int niv, int crt){
    if (niv!=l){
        for (int i=crt; i<n; i++){ //optimizare cazuri in care stim sigur ca nu intra
            vl[i]=1;
            comb(niv+1, i+1);
            vl[i]=0;
        }
    }
    else{
        int sum=0;
        for (int j=0; j<m; j++){
            pc[j]=0;
            for (int i=0; i<n; i++){
                if (!vl[i])
                    pc[j]+=mat[i][j];
            }
            sum+=pc[j];
        }
        sort(pc, pc+m);
        for (int i=0; i<c; i++)
            sum-=pc[i];
        if (sum>sol)
            sol=sum;
    }
}
int main()
{
    fin>>n>>m>>l>>c;
    if (n<m){
        for (int i=0; i<n; i++)
            for (int j=0; j<m; j++)
                fin>>mat[i][j];
    }
    else{
        swap(n, m); swap(l, c);
        for (int j=0; j<m; j++)
            for (int i=0; i<n; i++)
                fin>>mat[i][j];
    }
    comb(0, 0);
    fout<<sol;
    return 0;
}