Cod sursa(job #711599)

Utilizator dutzulBodnariuc Dan Alexandru dutzul Data 12 martie 2012 14:12:46
Problema Elimin Scor 50
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.9 kb
#include <cstdio>
#include <iostream>
#include <algorithm>
#define LE 8000
#define FOR for(i=1;i<=n;++i) for(j=1;j<=m;++j)
using namespace std;
int i,j,m,n,MAX=-100000,S[LE],SE[LE],semn[LE],a[150][LE],M[150][LE],nrl,nrc;

int suma(){
	int rez=0,l=0,ok=0;
	for(i=1;i<=m;++i) S[i]=0;
	
	
for(i=1;i<=n;++i) l=l+1-semn[i];	
if (l==nrl)ok=1;

	FOR{
		M[i][j]=a[i][j];M[i][j]*=semn[i];
		S[j]+=M[i][j];
	}
	
	sort(S+1,S+m+1);
	for(i=nrc+1;i<=m;++i) rez+=S[i];

	

if (ok==1)MAX=max(rez,MAX);
}
	
int back(int k){
    if(k==n+1) suma();
	else {
	   semn[k]=1,back(k+1);
	   semn[k]=0,back(k+1);
    }
}
int main()
{
	freopen("elimin.in","r",stdin);
	freopen("elimin.out","w",stdout);
	
	scanf("%ld%ld%ld%ld",&n,&m,&nrl,&nrc);
	FOR if(n<m) scanf("%ld",&a[i][j]); else  scanf("%ld",&a[j][i]);
	
	if (n>m) swap(n,m),swap(nrl,nrc);

	back(1);
	printf("%ld\n",MAX);
	return 0;
}