Cod sursa(job #203342)

Utilizator Matei14Popa-Matei Mihai Matei14 Data 15 august 2008 17:04:12
Problema Ghiozdan Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.78 kb
#include<stdio.h>
#define M 75005
#define N 20007
int nr[205],v[M],a[M];
int main(){
    int x,i,j,k,n,g,y,q;
    freopen("ghiozdan.in","r",stdin);
    freopen("ghiozdan.out","w",stdout);
    scanf("%d%d",&n,&g);
    for(i=1;i<=n;++i){
        scanf("%d",&x);
        nr[x]++;
    }
    for(i=200;i>=1;--i)
        for(k=g-i;k>=0;--k)
			if(!k||v[k])
				for(j=1;j<=nr[i];++j){
					q=k+i*j;
					if(!v[q]&&g>=q){
						v[q]=v[q-i]+1;
						a[q]=q-i;
					}
					else
						break;
				}
    for(i=g;i>=1;--i)
        if(v[i]){
            printf("%d %d\n",i,v[i]);
            break;
        }
    x=i;
    y=a[i];
    while(v[i]){
        printf("%d\n",x-y);
        --v[i];
        x=y;
        y=a[x];
    }
	fclose(stdin);
	fclose(stdout);
    return 0;
}