Cod sursa(job #187861)

Utilizator toni2007Pripoae Teodor Anton toni2007 Data 5 mai 2008 17:53:55
Problema Ghiozdan Scor 42
Compilator c Status done
Runda Arhiva de probleme Marime 0.85 kb
#include <stdio.h>
#include <stdlib.h>
#define INF 1000000
#define N 20010
#define S 75010
int n,s;
int g[N],best[S];
int nrmin,x;
void scan(){
     int i;
     freopen("ghiozdan.in","r",stdin);
     freopen("ghiozdan.out","w",stdout);
     scanf("%d%d",&n,&s);
     for (i=1;i<=n;++i)
         scanf("%d",&g[i]);
}
int min(int a,int b){
    if (a>b)
       return b;
    return a;
}
void knapsack(){
     int i,j;
     for (i=1;i<=s;++i)
         best[i]=INF;
     for (i=1;i<=n;++i)
         for (j=s;j>=0;--j)
             best[j+g[i]]=min(best[j+g[i]],best[j]+1);
     for (i=s;i>=0;--i){
         if (best[i]!=INF){
            x=i;
            nrmin=best[i];
            return;
         }
     }
}
void print(){
     printf("%d %d\n",x,nrmin);
     exit(0);
}
int main(){
    scan();
    knapsack();
    print();
}