Cod sursa(job #984110)

Utilizator stefanzzzStefan Popa stefanzzz Data 13 august 2013 16:01:11
Problema Ghiozdan Scor 100
Compilator cpp Status done
Runda Lista lui wefgef Marime 0.91 kb
#include <fstream>
#define MAXNG 201
#define MAXG 75010
using namespace std;
ifstream f("ghiozdan.in");
ofstream g("ghiozdan.out");

int n,G,v[MAXNG],a,pd[MAXG],back[MAXG],x;

void afisare(int p);

int main()
{
    int i,j,k;
    f>>n>>G;
    for(i=1;i<=n;i++){
        f>>a;
        v[a]++;}
    for(i=MAXNG-1;i>=1;i--){
        if(!v[i])
            continue;
        for(j=G;j>=0;j--){
            if(!pd[j]&&j)
                continue;
            for(k=1;k<=v[i];k++){
                if(i*k+j>G||pd[i*k+j])
                    break;
                pd[i*k+j]=pd[j]+k;
                back[i*k+j]=j;}}}
    for(i=G;!pd[i];i--);
    g<<i<<' '<<pd[i]<<'\n';
    afisare(i);
    f.close();
    g.close();
    return 0;
}

void afisare(int p){
    int i;
    a=back[p];
    x=(p-a)/(pd[p]-pd[a]);
    for(i=1;i<=pd[p]-pd[a];i++)
        g<<x<<'\n';
    if(a)
        afisare(a);}