Cod sursa(job #2017074)

Utilizator mjmilan11Mujdar Milan mjmilan11 Data 31 august 2017 11:03:41
Problema Elimin Scor 70
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.26 kb
#include <iostream>
#include <fstream>
#include <algorithm>
using namespace std;
ifstream fin("elimin.in");
ofstream fout("elimin.out");
int n,m,r,c,maxim,a[21][4005],cl[4005],aux,pre;
bool st[4005];
void verificare()
{
    int i,j,sum=0;
    for(i=1;i<=m;i++)
        cl[i]=0;
    for(i=1;i<=n;i++)
    {
        if(st[i]==0)
        {
            for(j=1;j<=m;j++)
            {
                cl[j]=cl[j]+a[i][j];
            }
        }
    }
    sort(cl+1,cl+m+1);
    for(i=c+1;i<=m;++i)
        sum+=cl[i];
    if(maxim<sum)
        maxim=sum;
}

void Back(int t,int pre)
{
    int i;
    if(t>r) verificare();
    else
    for(i=pre;i<=n;++i)
    {
        st[i]=1;
        Back(t+1,i+1);
        st[i]=0;
    }
}

int main()
{
    fin >> n >> m >> r >> c;
    int i,j;
    maxim=-1000000000; /// -1000000...;
    if(n>m)
    {
        aux=n;
        n=m;
        m=aux;
        aux=r;
        r=c;
        c=aux;
        for(i=1;i<=m;++i)
        {
            for(j=1;j<=n;++j)
                fin >> a[i][j];
        }
    }
    else
    {
        for(i=1;i<=n;++i)
        {
            for(j=1;j<=m;++j)
                fin >> a[i][j];
        }
    }
    Back(1,1);
    fout << maxim;
    return 0;
}