Pagini recente » Cod sursa (job #397183) | Cod sursa (job #1523247) | Cod sursa (job #1610231) | Cod sursa (job #1831120) | Cod sursa (job #199617)
Cod sursa(job #199617)
#include <stdio.h>
#define INF 30000
#define Gmax 75002
#define N 20005
int g[N],f[201],n,G,v[Gmax],l[Gmax],max=0;
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);
if(x>max) max=x;
f[x]++;
}
}
void solve(){
int i,j,k,x,y;
for(i=max;i>=1;i--)
if(f[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;
}