Pagini recente » Cod sursa (job #669631) | Cod sursa (job #1299421) | Cod sursa (job #709038)
Cod sursa(job #709038)
#include <fstream>
#include <algorithm>
#define NMAx 20100
#define GMAx 75100
using namespace std;
int N,G,A[NMAx],V[GMAx],T[GMAx];
void citire() {
ifstream in("ghiozdan.in");
in>>N>>G;
for(int i=1;i<=N;i++)
in>>A[i];
in.close();
}
void afis() {
int i,k=0,Nr;
ofstream out("ghiozdan.out");
for(i=G;!V[i];i--);
Nr=V[i]-1;
out<<i<<' '<<Nr<<'\n';
for(;T[i];i=T[i])
V[++k]=i-T[i];
V[++k]=i;
for(i=1;i<=Nr;i++)
out<<V[i]<<'\n';
out.close();
}
int main() {
int i,j,mX;
citire();
sort(A+1,A+N+1);
reverse(A+1,A+N+1);
V[0]=1;
mX=0;
for(i=1;i<=N;i++)
for(j=min(mX,G-A[i]);j>=0;j--)
if(V[j]&&!V[j+A[i]]) {
V[j+A[i]]=V[j]+1;
T[j+A[i]]=j;
if(j+A[i]>mX)
mX=j+A[i];
}
afis();
return 0;
}