Cod sursa(job #150101)

Utilizator za_wolfpalianos cristian za_wolf Data 6 martie 2008 16:17:55
Problema Elimin Scor 90
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.95 kb
#include<stdio.h>
#include<string.h>
#include<algorithm>
using namespace std;
int cmpf(int a, int b)
{
	return (a<b);
}
int b,z[600],x[550][550],i,j,k,l,a,s,rez,n,m,ln,cl;
int y[17];
void back(int p, int k)
{
/*	if (p>m+1)
		return ;*/
	if (k==cl)
	{
		s=0;
		for (int i=1;i<=n;i++)
		{
			z[i]=0;
			for (int j=1;j<=m;j++)
				if (!y[j])
					z[i]+=x[i][j];
		}
		sort(z+1,z+n+1,cmpf);
		for (i=ln+1;i<=n;i++)
			s+=z[i];
		if (s>rez)
			rez=s;
	}
	else
	if (p<=m)
	{
		y[p]=1;
		back(p+1,k+1);
		y[p]=0;
		back(p+1,k);
	}
}
int main()
{
	freopen("elimin.in","r",stdin);
	freopen("elimin.out","w",stdout);
	scanf("%d%d%d%d",&n,&m,&ln,&cl);
	rez=-100000;
	if (m>15||m>n)
	{
		a=n; n=m; m=a;
		a=ln; ln=cl; cl=a;
		for (j=1;j<=m;j++)
			for (i=1;i<=n;i++)
				scanf("%d",&x[i][j]);
	}
	else
		for (i=1;i<=n;i++)
			for (j=1;j<=m;j++)
				scanf("%d",&x[i][j]);


	back(1,0);
	printf("%d\n",rez);


	return 0;
}