Cod sursa(job #2422550)

Utilizator Ruxandra985Nanu Ruxandra Laura Ruxandra985 Data 19 mai 2019 10:03:11
Problema Ghiozdan Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 1.13 kb
#include <cstdio>
#include <iostream>
#include <algorithm>

using namespace std;
int w[75001],f[201];
pair <int,int> tt[75001];
int main()
{
    FILE *fin=fopen ("ghiozdan.in","r");
    FILE *fout=fopen ("ghiozdan.out","w");
    int n,g,i,j,x,k,sol;
    fscanf (fin,"%d%d",&n,&g);
    for (i=1;i<=n;i++){
        fscanf (fin,"%d",&x);
        f[x]++;
    }
    for (i=200;i;i--){
        if (f[i]){
            for (j=g;j;j--){
                if (!w[j]){
                    for (k=1;k<=f[i] && j - i * k >=0 ; k++){
                        if (w[j - i*k] || j == i*k){
                            w[j] = k + w[j - i*k];
                            tt[j] = make_pair(i,k);
                            break;
                        }
                    }
                }
            }
        }
    }
    sol = g;
    while (!w[sol])
        sol--;
    fprintf (fout,"%d %d\n",sol,w[sol]);
    while (sol){
        for (i=1;i<=tt[sol].second;i++)
            fprintf (fout,"%d\n",tt[sol].first);
        sol = sol - tt[sol].first * tt[sol].second;
    }
    /// doar testez daca nu iau tle:)
    return 0;
}