Cod sursa(job #2242341)

Utilizator pionierul22aNa LiZa pionierul22 Data 18 septembrie 2018 15:32:29
Problema Elimin Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.89 kb
#include <fstream>
#include <algorithm>
using namespace std;
ifstream fin("elimin.in");
ofstream fout("elimin.out");
int n,m,r,c,total,summax;
int t[1001][1001],l[1001];

void find(int sum)
{
    for(int j=1;j<=n;j++)l[j]=t[0][j];
    sort(l+1,l+n+1);
    for(int j=1;j<=c;j++)
        sum-=l[j];
    if(sum>summax)
        summax=sum;
}

void back(int i,int last, int s)
{
    if(i==r)
        find(s);
    else
    for(int j=last;j<=m;j++)
    {
       for(int k=1;k<=n;k++)
            t[0][k]-=t[j][k];
        back(i+1,j,s-t[j][0]);
        for(int k=1;k<=n;k++)
            t[0][k]+=t[j][k];
    }
}

int main()
{
    fin>>n>>m>>r>>c;
    for(int i=1;i<=n;i++)
        for(int j=1;j<=m;j++)
    {
        fin>>t[i][j];
        t[i][0]+=t[i][j];
        t[0][j]+=t[i][j];
        total+=t[i][j];
    }

    back(0,1,total);
    fout<<summax;
    return 0;
}