Pagini recente » Cod sursa (job #1703971) | Cod sursa (job #413533) | Cod sursa (job #2056154) | Rating Adrian Smecheru (DanteAdy) | Cod sursa (job #199604)
Cod sursa(job #199604)
#include <stdio.h>
#define INF 30000
#define Gmax 75002
#define N 20005
int g[N],f[201],n,G,v[Gmax],l[Gmax];
void citeste(){
int x;
freopen("ghiozdan.in","r",stdin);
freopen("ghiozdan.out","w",stdout);
scanf("%d%d",&n,&G);
for(int i=1;i<=n;i++){
scanf("%d",&x);
f[x]++;
}
}
void solve(){
int i,j,k,x,y;
for(i=200;i>=1;i--)
for(k=G-i;k>=0;k--)
if(v[k] || !k)
for(j=1;j<=f[i];j++)
if(k+i*j<=G && !v[k+i*j]){
v[k+i*j]=v[k+i*(j-1)]+1;
l[k+i*j]=k+i*(j-1);
}
else break;
for(i=G;i>=1;i--)
if (v[i]){
printf("%d %d\n",i,v[i]);
break;
}
x=i;
y=l[x];
while(v[i]){
printf("%d\n",x-y);
v[i]--;
x=y;
y=l[y];
}
}
int main(){
citeste();
solve();
return 0;
}