Cod sursa(job #1845412)

Utilizator mjmilan11Mujdar Milan mjmilan11 Data 11 ianuarie 2017 14:11:48
Problema Elimin Scor 60
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.17 kb
#include <bits/stdc++.h>

using namespace std;
int c[7500],r[7500];
int a[7500][20],sum;
int n,m,R,C,rs[7500],sumax=0;

ifstream fin("elimin.in");
ofstream fout("elimin.out");

void back(int l,int u)
{
    int i,j;
    if(l==C+1)
    {
        sum=0;
        for(i=1;i<=n;i++)
        {
            r[i]=c[i];
            for(j=1;j<l;j++)
            {
                r[i]-=a[i][rs[j]];
            }
        }
        sort(r+1,r+1+n);
        for(i=R+1;i<=n;i++) sum+=r[i];
        sumax=max(sumax,sum);
    }
    else
        for(i=u+1;i<=m;i++)
    {
        rs[l]=i;
        back(l+1,i);
    }
}
int main()
{
    fin >> n >> m >> R >> C;
    if(m<=n)
    {
        for(int i=1;i<=n;i++)
            for(int j=1;j<=m;j++)
        {
            fin >> a[i][j];
            sum+=a[i][j];
        }
    }
    else
    {
        for(int i=1;i<=n;i++)
            for(int j=1;j<=m;j++)
            {
                fin >> a[j][i];
                sum+=a[j][i];
            }
    }
    swap(n,m);
    swap(R,C);
    for(int i=1;i<=n;i++)
        for(int j=1;j<=m;j++) c[i]+=a[i][j];
    back(1,0);
    fout << sumax;
    return 0;
}