Pagini recente » Cod sursa (job #1329129) | Cod sursa (job #2752030) | Cod sursa (job #133560) | Cod sursa (job #1256347) | Cod sursa (job #18944)
Cod sursa(job #18944)
#include<stdio.h>
#define fin "ghiozdan.in"
#define fout "ghiozdan.out"
#define Smax 75001
int N,G,viz[Smax],min[Smax],next[Smax][2],sol; //0-left , 1-right
int main() {
int i,j,a;
freopen(fin,"r",stdin); freopen(fout,"w",stdout);
scanf("%i%i",&N,&G);
viz[0]=1;
next[G][0]=0;
next[G][1]=G;
next[0][1]=G;
next[0][0]=0;
for (i=1;i<=N;++i) {
scanf("%i",&a);
for (j=G;j>=0;) {
if (viz[j] && j+a<=G) {
if (!viz[j+a]) {
viz[j+a]=1;
next[j+a][0]=j;
next[j+a][1]=next[j][1];
next[next[j][1]][0]=j+a;
next[j][1]=j+a;
}
if (min[j+a]>min[j]+1) min[j+a]=min[j]+1;
}
fprintf(stderr,"%i ",j);
if (j==0) j=-1;
else j=next[j][0];
}
}
for (j=1;j<=G;++j) fprintf(stderr,"%i %i\n",next[j][0],next[j][1]);
for (j=G;viz[j]==0;--j);
printf("%i %i\n",j,min[j]);
fclose(stdin); fclose(stdout);
return 0;
}