Cod sursa(job #2752365)

Utilizator Simon2712Simon Slanina Simon2712 Data 17 mai 2021 19:47:21
Problema Elimin Scor 70
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 1.55 kb
#include <fstream>
#include <algorithm>
using namespace std;
ifstream cin("elimin.in");
ofstream cout("elimin.out");
bool cmp(int a,int b)
{
    if(a!=b)
        return (a>b);
    return false;
}
int a[101][3001],a2[101][3001];
int vsum[3001];
int vc[3001];
int main()
{
    int n,m,l,c,aux,ii,nr,n2,i,j,rezfin=0,cnt;
    cin>>n>>m>>l>>c;
    for(i=1;i<=n;i++)
    for(j=1;j<=m;j++)
        cin>>a[i][j];
    if(n>m)
    {
        aux=l;
        l=c;
        c=aux;
        aux=n;
        n=m;
        m=aux;
        for(i=1;i<=n;i++)
        for(j=1;j<=m;j++)
            a2[i][j]=a[j][i];
        for(i=1;i<=n;i++)
        for(j=1;j<=m;j++)
            a[i][j]=a2[i][j];
    }
    for(ii=0;ii<(1<<n);ii++)
    {
        aux=ii;
        nr=0;
        cnt=0;
        for(i=1;i<=n;i++){
            vc[i]=0;
            for(j=1;j<=m;j++)
                vsum[j]=0;
        }
        while(aux)
        {
            nr++;
            if(aux%2==1){
                vc[nr]=1;
                cnt++;
            }
            aux/=2;
        }
        n2=0;
        if(cnt==l){
            for(i=1;i<=n;i++)
            {
                if(vc[i]==0)
                {
                    n2++;
                    for(j=1;j<=m;j++)
                        vsum[j]+=a[i][j];
                }
            }
            sort(vsum+1,vsum+m+1,cmp);
            int rez=0;
            for(i=1;i<=m-c;i++)
                rez+=vsum[i];
            rezfin=max(rez,rezfin);
        }
    }
    cout<<rezfin;
    return 0;
}