Pagini recente » Cod sursa (job #397490) | Cod sursa (job #2310743) | Cod sursa (job #1376683) | Cod sursa (job #2225308) | Cod sursa (job #1248690)
#include<fstream>
using namespace std;
ifstream fi("ghiozdan.in");
ofstream fo("ghiozdan.out");
const int MAX_N = 20004;
const int MAX_G = 75004;
int greutate[MAX_N];
bool este[MAX_G];
int last[MAX_G];
int nr[MAX_G];
int sol,gmax;
int i,j,n;
int main(){
fi>>n>>gmax;
for(i=1;i<=n;i++) fi>>greutate[i];
este[0]=1;
last[0]=0;
nr[0]=0;
for(j=1;j<=gmax;j++) nr[j]=n+5;
for(i=1;i<=n;i++)
for(j=gmax;j>=greutate[i];j--)
if(este[j-greutate[i]] && (nr[j-greutate[i]]+1<nr[j]))
{
este[j]=1;
last[j]=greutate[i];
nr[j]=nr[j-greutate[i]]+1;
if(j>sol) sol=j;
}
fo<<sol<<" "<<nr[sol]<<"\n";
for(j=sol;j>=0;--j)
if(nr[j]+1==nr[sol])
{
fo<<sol-j<<"\n";
sol=j;
}
fi.close();
fo.close();
return 0;
}