Cod sursa(job #1939030)

Utilizator RaduGiucleaGiuclea Radu RaduGiuclea Data 25 martie 2017 13:27:24
Problema Elimin Scor 30
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.9 kb
#include <cstdio>
#include <algorithm>
using namespace std;
int a[20][8000],fv[20],col[8000],n,m,l,c,wurk[8000],mx=-1;
void bkt(int val,int el)
{
	int i,j;
	fv[el]=1;
	if(val==l)
	{
		int s=0;
		for(i=1;i<=m;i++)
		{
			wurk[i]=col[i];
			for(j=1;j<=n;j++)
				if(fv[j])
					wurk[i]-=a[j][i];
		}
		sort(&wurk[1],&wurk[m+1]);
		for(i=c+1;i<=m;i++)
			s+=wurk[i];
		if(s>mx)
			mx=s;
	}
	else
		for(i=1;i<=n;i++)
			if(fv[i]==0)
				bkt(val+1,i);
	fv[el]=0;
}
int main()
{
    freopen("elimin.in","r",stdin);
    freopen("elimin.out","w",stdout);
    int i,j;
    scanf("%d%d%d%d",&n,&m,&l,&c);
		for(i=1;i<=n;i++)
			for(j=1;j<=m;j++)
				if(n<m)
					scanf("%d",&a[i][j]);
				else scanf("%d",&a[j][i]);
	if(n>=m)
	{
		i=n;
		n=m;
		m=i;
		i=l;
		l=c;
		c=l;
	}
	for(i=1;i<=m;i++)
		for(j=1;j<=n;j++)
			col[i]+=a[j][i];
	bkt(0,0);
	printf("%d",mx);
    return 0;
}