Pagini recente » Cod sursa (job #1661326) | Cod sursa (job #2238470) | Cod sursa (job #1718948) | Cod sursa (job #1641619) | Cod sursa (job #1614993)
#include <fstream>
#include <algorithm>
using namespace std;
ifstream fin("ghiozdan.in");
ofstream fout("ghiozdan.out");
short n;
int gt, start, ctr;
int gr[20001];
struct {
short nrpoz;
short deunde;
} ghiozdan[75001];
int rez[20001];
int main()
{
fin>>n>>gt;
for(int i=1;i<=n;i++)
fin>>gr[i];
for(int i=1;i<=gt;i++)
ghiozdan[i].nrpoz=30000;
sort(gr+1, gr+1+n);
for(int k=n;k>=1;k--)
{
for(int i=gt; i>=gr[k]; i--)
if(ghiozdan[i-gr[k]].nrpoz!=30000)
if(ghiozdan[i-gr[k]].nrpoz+1<ghiozdan[i].nrpoz)
{
ghiozdan[i].nrpoz=ghiozdan[i-gr[k]].nrpoz+1;
ghiozdan[i].deunde=i-gr[k];
if(i>start)
start=i;
break;
}
}
fout<<start<<' ';
while(start)
{
rez[++ctr]=start-ghiozdan[start].deunde;
start=ghiozdan[start].deunde;
}
fout<<ctr<<'\n';
for(int i=1;i<=ctr;i++)
fout<<rez[i]<<'\n';
return 0;
}