Cod sursa(job #1716222)

Utilizator ade_tomiEnache Adelina ade_tomi Data 12 iunie 2016 11:12:00
Problema Elimin Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.39 kb
#include<iostream>
#include<fstream>
#include<algorithm>
using namespace std;
int i,j,n,m,sol,mask,r,c,sum,s_aux,nr,sc[8000];
int main()
{

    ifstream cin("elimin.in");
    ofstream cout("elimin.out");
    cin>>n>>m>>r>>c;
    int d1=min(n,m);
    int d2=max(n,m);
    int a[d1+3][d2+3];
    if(n<=m)
    {
       // int a[n+3][m+3];
        for(i=1;i<=n;i++)
            for(j=1;j<=m;j++){
                cin>>a[i][j];
                sum+=a[i][j];
            }

    }
    else
    {
      //  int a[m+3][n+4];
        for(i=1;i<=n;i++)
           for(j=1;j<=m;j++){
                cin>>a[j][i];
                sum+=a[j][i];
           }
        swap(n,m);
        swap(r,c);
    }

   for(mask=0;mask<(1<<(n));mask++)
    {
        nr=0;
        s_aux=sum;

        for(j=0;(1<<j)<=mask;j++)
            if((mask&(1<<j))!=0)
                nr++;
        if(nr==r)
        {
            for(i=1;i<=n;i++)
                for(j=1;j<=m;j++)
                {
                    if((mask&(1<<(i-1)))!=0)
                        s_aux-=a[i][j];
                    else
                        sc[j]+=a[i][j];

                }
            sort(sc+1,sc+1+m);
            for(j=1;j<=c;j++)
                s_aux-=sc[j];
            for(j=1;j<=m;j++)
                sc[j]=0;
            sol=max(sol,s_aux);
        }
    }
    cout<<sol;
    return 0;
}