Cod sursa(job #2310215)

Utilizator pasoi_stefanPasoi Stefan pasoi_stefan Data 30 decembrie 2018 20:13:01
Problema Elimin Scor 70
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 1.13 kb
#include<fstream>
#include<vector>
#include<algorithm>
using namespace std;
ifstream cin("elimin.in");
ofstream cout("elimin.out");
short n,m,r,c,x;
int MaxSum;
bool elimin[10005];
vector<vector<short> > Mat;
vector<short> CurrIt;
void bt(int k){

    if(k>r){

        int SumTotal=0;
        vector<short> ColSum(m+1,0);

        for(int j=1;j<=m;j++)
            for(int i=1;i<=n;i++)
                if(!elimin[i])
                    ColSum[j]+=Mat[i][j];

        sort(ColSum.begin()+1,ColSum.end());

        for(int i=c+1;i<=m;i++)
            SumTotal+=ColSum[i];

        MaxSum=max(MaxSum,SumTotal);

        ColSum.clear();

        return ;

    }

    for(CurrIt[k]=CurrIt[k-1]+1;CurrIt[k]<=n;CurrIt[k]++){

            elimin[CurrIt[k]]=1;
            bt(k+1);
            elimin[CurrIt[k]]=0;

        }

}

int main(){

    cin>>n>>m>>r>>c;

    vector<short> V(m+1,0);

    CurrIt.assign(n+1,0);

    Mat.push_back(V);

    for(int i=1;i<=n;i++){

        for(int j=1;j<=m;j++)
            cin>>V[j];

        Mat.push_back(V);

    }

    bt(1);

    cout<<MaxSum;

}