Cod sursa(job #2361921)

Utilizator Alex_AeleneiAlex Aelenei Ioan Alex_Aelenei Data 2 martie 2019 20:23:24
Problema Ghiozdan Scor 42
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 1.11 kb
#include <cstdio>
#include <vector>
#include <iostream>

using namespace std;
const int INF=20000;
int v[75005];///,bacc[75005];
vector <int> ans;
int main()
{
    freopen("ghiozdan.in","r",stdin);
    freopen("ghiozdan.out","w",stdout);
    int n,g,i,j,x,l=0,gmax,nmin,aux;
    scanf("%d%d",&n,&g);
    fill(v+1,v+g+1,INF);
    ///fill(bacc+1,bacc+g+1,INF);
    for(i=1;i<=n;++i)
    {
        scanf("%d",&x);
        aux=l;
        for(j=l;j>=0;--j)
            if(v[j]!=INF&&j+x<=g)
            {
                v[j+x]=min(v[j+x],v[j]+1);
                aux=max(aux,j+x);
            }
        /*for(j=0;j<=l;++j)
            if(v[j+x]==v[j]+1)
                bacc[j+x]=j;*/

        l=aux;
    }
    for(i=g;i>=0;--i)
        if(v[i]!=INF)
        {
            gmax=i;
            nmin=v[i];
            break;
        }
    printf("%d %d\n",gmax,nmin);
    /*x=gmax;
    while(x)
    {
        ans.push_back(x-bacc[x]);
        x=bacc[x];
    }
    vector <int> :: reverse_iterator it;
    for(it=ans.rbegin();it!=ans.rend();++it)
        printf("%d\n",*it);*/
    return 0;
}