Cod sursa(job #131417)

Utilizator bogdanhm999Casu-Pop Bogdan bogdanhm999 Data 3 februarie 2008 19:09:08
Problema Elimin Scor 20
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.26 kb
#include <stdio.h>   
#include <algorithm>

using namespace std;
  
long n,m,i,j,a[16][1000],r,c,q,nr,aux;
long s[1000],st,maxim;
  
int main(){   
    freopen("elimin.in","r",stdin);
    freopen("elimin.out","w",stdout);
    
    scanf("%ld %ld %ld %ld",&n,&m,&r,&c);
    
    if (n>m){    
       for (i=1;i<=n;i++){   
           for (j=1;j<=m;j++){   
               scanf("%ld",&a[i][j]);
           }   
       }   
    }   
    else{
         aux=n;n=m;m=aux;
         aux=r;r=c;c=aux;
         for (j=1;j<=m;j++){
             for (i=1;i<=n;i++){
                 scanf("%ld",&a[n-i+1][j]);
             }
         }
    }
    q=0;
    while (q<(1<<m)){
          nr=0;
          for (i=0;i<m;i++){   
              if (q&(1<<i))nr++;
          }
          if (nr==c){
             for (i=1;i<=n;i++)s[i]=0;
             st=0;
             for (j=1;j<=m;j++)
                 if (!(q&(1<<(j-1))))
                    for (i=1;i<=n;i++){
                        s[i]+=a[i][j];
                        st+=a[i][j];
                    }
             sort(s,s+n+1);
             for (i=1;i<=r;i++)st-=s[i];
             if (st>maxim)maxim=st;
          }
          q++;
    }   
    printf("%ld\n",maxim);

    return 0;   
}