Mai intai trebuie sa te autentifici.
Cod sursa(job #1157072)
Utilizator | Data | 28 martie 2014 11:16:08 | |
---|---|---|---|
Problema | Ghiozdan | Scor | 100 |
Compilator | cpp | Status | done |
Runda | Arhiva de probleme | Marime | 0.75 kb |
#include <algorithm>
#include <cstdio>
using namespace std;
const int N=75005;
int v[205], dp[N], nxt[N];
int main()
{
freopen("ghiozdan.in", "r", stdin);
freopen("ghiozdan.out", "w", stdout);
int n, m, i, j, k;
scanf("%d%d", &m, &n);
while(m--)
{
scanf("%d", &k);
v[k]++;
}
dp[0]=1;
for(i=200;i;i--)
{
if(!v[i]) continue;
for(j=n-i;j>=0;j--)
{
if(!dp[j]) continue;
for(k=1;k<=v[i]&&j+k*i<=n&&!dp[j+k*i];k++)
{
dp[j+k*i]=dp[j]+k;
nxt[j+k*i]=i;
}
}
}
for(i=n;!dp[i];i--);
printf("%d %d\n", i, dp[i]-1);
for(;i;i-=nxt[i]) printf("%d\n", nxt[i]);
}