Mai intai trebuie sa te autentifici.
Cod sursa(job #956498)
Utilizator | Data | 3 iunie 2013 11:44:11 | |
---|---|---|---|
Problema | Fabrica | Scor | 2 |
Compilator | cpp | Status | done |
Runda | Arhiva de probleme | Marime | 0.68 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[pl],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);
int a=f(1,N);
printf("%d %d\n",a,a*2);
return 0;
}