Cod sursa(job #2202934)

Utilizator adriashkin.07alehandru69 adriashkin.07 Data 10 mai 2018 14:34:45
Problema Ghiozdan Scor 90
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.82 kb
#include <bits/stdc++.h>
#define inf 31313
using namespace std;
 
int n, s;
unsigned short best[80000], nr[300], a[22222], t[80000];
 
int main()
{
    ifstream cin("ghiozdan.in");
    ofstream cout("ghiozdan.out");
    int i,j,k;
    cin>>n>>s;
    for (i=0; i<n; i++)
        cin>>k, nr[k]++;
    n=0;
    for (i=250; i>0; i--)
        for (j=0; j<nr[i]; j++) a[n++]=i;
    for (i=1; i<=s; i++) best[i]=inf;
    best[0]=0;
    int last=0;
    for (i=0; i<n; i++){
        k=a[i];
        last+=k;
        if (last>s) last=s;
        for (j=last; j>=k; j--)
            if (best[j-k]+1<best[j])
               best[j]=best[j-k]+1, t[j]=k;
        if (best[s]<inf) break;
    }
    while (best[s]==inf) s--;
    cout<< s<<" "<<best[s]<<"\n";
    while (s) cout<< t[s]<<"\n", s-=t[s];
    return 0;
}