Pagini recente » Profil M@2Te4i | Cod sursa (job #2162956) | Cod sursa (job #1282495) | Statistici pelz pelz (pelz) | Cod sursa (job #199614)
Cod sursa(job #199614)
#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--)
if(f[i]) {
for(k=G-i;k>=1;k--)
if(v[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(j=1;j<=f[i];j++)
if(i*j<=G && !v[i*j]){
v[i*j]=v[i*(j-1)]+1;
l[i*j]=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;
}