Cod sursa(job #2362276)

Utilizator Alex_AeleneiAlex Aelenei Ioan Alex_Aelenei Data 3 martie 2019 08:07:20
Problema Ghiozdan Scor 60
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.91 kb
#include <cstdio>
#include <vector>
#include <iostream>

using namespace std;
const int INF=20000;
int v[75005],f[205];
vector <int> ans;
int main()
{
    freopen("ghiozdan.in","r",stdin);
    freopen("ghiozdan.out","w",stdout);
    int n,g,i,j,k,x,gmax,nmin,mx=0;
    scanf("%d%d",&n,&g);
    for(i=1;i<=n;++i)
    {
        scanf("%d",&x);
        f[x]++;
        mx=max(mx,x);
    }
    for(i=mx;i>=1;--i)
        if(f[i])
            for(j=g-i;j>=0;--j)
                if(v[j]||j==0)
                {
                    k=1;
                    while(k<=f[i]&&j+k*i<=g&&!v[j+k*i])
                    {
                        v[j+k*i]=v[j]+k;
                        ++k;
                    }
                }
    for(i=g;i>=1;--i)
        if(v[i])
        {
            gmax=i;
            nmin=v[i];
            break;
        }
    printf("%d %d\n",gmax,nmin);
    return 0;
}