Cod sursa(job #956494)

Utilizator burakbugrulBurak Bugrul burakbugrul Data 3 iunie 2013 11:40:28
Problema Fabrica Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.66 kb
#include <algorithm>
#include <cstdio>
#include <iostream>
#include <queue>

#define fi first
#define se second

using namespace std;

const int MAXN=100010;

int N,A,B;
int ar[MAXN];
int dn[MAXN][101];

int f( int pl , int lf ){
	
	if( pl==A )
		return ar[pl]*lf;
	
	if( lf==0 )
		return 0;
	
	int &rev=dn[pl][lf];
	
	if( rev )
		return rev;
	
	rev=1e8;
	for( int i=0 ; i<lf ; i++ )
		rev=min(rev,max(i*ar[i],f(pl+1,lf-i)));
	
	return rev;
}

int main(){
	
	freopen("fabrica.in","r",stdin);
	freopen("fabrica.out","w",stdout);
	
	scanf(" %d %d %d",&N,&A,&B);
	
	for( int i=1 ; i<=A ; i++ )
		scanf(" %d",ar+i);
	
	sort(ar+1,ar+A+1);
	
	printf("%d %d\n",f(1,N),1);
	return 0;
}