Cod sursa(job #65698)

Utilizator alextheroTandrau Alexandru alexthero Data 11 iunie 2007 15:53:34
Problema Elimin Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.06 kb
#include <stdio.h>
//#include <algorithm>

#define nmax 10005

using namespace std;

short int a[16][nmax];
int rez = 0,n,m,i,j,r,c,d[nmax],aux[20],sum = 0;

void baga() {
	return ;
	d[0] = 0;
	for(int j = 1; j <= n; j++) {
		sum = 0;
		for(int i = 1; i <= m; i++)
			if(aux[i] == 0) sum += a[i][j];
		d[++d[0]] = sum;
	}
//	sort(d + 1,d + d[0]);
	sum = 0;
	for(int i = c + 1; i <= d[0]; i++) sum += d[i];
	if(sum > rez) rez = sum;
}

void back(int x,int p) {
	if(p > r) return ;
	for(int i = 0; i < 2; i++) {
		aux[x] = i;
		if(x == m) {
			if(p + aux[x] == r) baga();
		}
		else back(x + 1,p + aux[x]);
	}
}

int main() {
	freopen("elimin.in","r",stdin);
	freopen("elimin.out","w",stdout);

	scanf("%d%d%d%d",&m,&n,&r,&c);
	if(n < m) {
		for(i = 1; i <= m; i++) 
			for(j = 1; j <= n; j++) {
				if(j >= 16) for(;;); 
				if(m - i + 1 >= nmax) for(;;);
			    scanf("%d",a[j][m - i + 1]);
			}
		n ^= m ^= n ^= m; r ^= c ^= r ^= c;
	}
	else {
		for(i = 1; i <= m; i++) 
			for(j = 1; j <= n; j++)
				scanf("%d",&a[i][j]);
	}
	return 0;

	back(1,0);

	printf("%d\n",rez);

	return 0;
}