Pagini recente » Cod sursa (job #1056367) | Cod sursa (job #3184189) | Arhiva de probleme | Cod sursa (job #2749170) | Cod sursa (job #18376)
Cod sursa(job #18376)
#include<fstream.h>
long N,A[75100],P[75100],nr[210];
int GR,G[20100];
long i,j;
int main()
{
ifstream f("ghiozdan.in");
ofstream gout("ghiozdan.out");
f>>N;
f>>GR;
for(i=1;i<=N;i++)
{
f>>G[i];
nr[G[i]]++;
}
f.close();
A[0]=0;
for (i=1;i<=200;i++)
A[i]=-1;
for(i=201;i>0;i--)
if(nr[i]>0)
{
for(j=750;j>=0;j--)
if(A[j]!=-1)
if ((A[j]+1<A[j+i] && A[j+i]!=-1) || (A[j+i]==-1))
{
A[j+i]=A[j]+1;
P[j+i]=i;
}
nr[i]--;
if(nr[i]==0)
nr[i]=-1;
i++;
}
for(i=GR;i>=0;i--)
if(A[i]!=-1)
{
gout<<i<<" "<<A[i]<<"\n";
break;
}
for(;i>0;i=i-P[i])
gout<<P[i]<<" ";
gout.close();
return 0;
}