Cod sursa(job #1614993)

Utilizator theodor1289Theodor Amariucai theodor1289 Data 26 februarie 2016 12:44:21
Problema Ghiozdan Scor 30
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.04 kb
#include <fstream>
#include <algorithm>
using namespace std;
ifstream fin("ghiozdan.in");
ofstream fout("ghiozdan.out");
short n;
int gt, start, ctr;
int gr[20001];
struct {
short nrpoz;
short deunde;
} ghiozdan[75001];
int rez[20001];

int main()
{
    fin>>n>>gt;
    for(int i=1;i<=n;i++)
    fin>>gr[i];

    for(int i=1;i<=gt;i++)
        ghiozdan[i].nrpoz=30000;

    sort(gr+1, gr+1+n);

    for(int k=n;k>=1;k--)
    {
        for(int i=gt; i>=gr[k]; i--)
            if(ghiozdan[i-gr[k]].nrpoz!=30000)
            if(ghiozdan[i-gr[k]].nrpoz+1<ghiozdan[i].nrpoz)
            {

            ghiozdan[i].nrpoz=ghiozdan[i-gr[k]].nrpoz+1;
            ghiozdan[i].deunde=i-gr[k];

            if(i>start)
                start=i;

            break;
            }
    }

    fout<<start<<' ';

    while(start)
    {
        rez[++ctr]=start-ghiozdan[start].deunde;
        start=ghiozdan[start].deunde;
    }

    fout<<ctr<<'\n';
    for(int i=1;i<=ctr;i++)
        fout<<rez[i]<<'\n';

    return 0;
}