Mai intai trebuie sa te autentifici.
Cod sursa(job #885093)
Utilizator | Data | 21 februarie 2013 17:22:03 | |
---|---|---|---|
Problema | Ghiozdan | Scor | 44 |
Compilator | cpp | Status | done |
Runda | Arhiva de probleme | Marime | 0.97 kb |
#include <fstream>
using namespace std;
ifstream fin("ghiozdan.in");
ofstream fout("ghiozdan.out");
int v[20001],w[75001][2],s[20001];
int n,G,i,j,h,k;
int main()
{
fin>>n>>G;
for (i=1;i<=n;i++)
{
fin>>v[i];
for (j=G;j>v[i];j--)
{if (w[j-v[i]][0]) if (w[j-v[i]][0]+1<w[j][0]||w[j][0]==0)
{
w[j][0]=w[j-v[i]][0]+1;
w[j][1]=v[i];
if (j>=s[0])
{
s[0]=j;
s[1]=w[j][0];
h=j;
for (k=2;w[h][1]!=0;h=h-w[h][1]) s[k++]=w[h][1];
}
}
}
j=v[i];
if (w[j][0]==0||1<w[j][0])
{
w[j][0]=1;
w[j][1]=0;
if (j>=s[0])
{
s[0]=v[i];
s[1]=1;
s[2]=v[i];
}
}
}
fout<<s[0]<<" "<<s[1]<<"\n";
for (k=s[1]+1;k>=2;k--) fout<<s[k]<<"\n";
}