Cod sursa(job #1483259)

Utilizator vancea.catalincatalin vancea.catalin Data 9 septembrie 2015 00:02:28
Problema Ghiozdan Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.26 kb
#include <iostream>
#include <fstream>
#include <algorithm>
#include <bitset>
using namespace std;
fstream fin("ghiozdan.in",ios::in),fout("ghiozdan.out",ios::out);
bitset <20003> pot[9999];
//int maxim=0,n,g,imax,gmax=-9,x[20004];
bool cmp(int a,int b)
{
    return a>b;
}
int main()
{
    int i,a,j,r;
    fin>>n>>g;
    for(i=1;i<=n;i++)fin>>x[i];
    sort(x+1,x+n+1,cmp);
    fout<<"               \n";
    for(i=1;i<=n;i++)
    {
        a=x[i];
        pot[i][a]=1;
        if((a>gmax)&&(a<=g))
        {
            gmax=a;
            imax=i;
        }
        for(j=1;j<=maxim;j++)
        {
            if(pot[i-1][j]!=0)
            {
                pot[i][j]=j;
                pot[i][j+a]=1;
                if(j>gmax&&j<=g)
                {
                    gmax=j;
                    imax=i;
                }
                if(j+a>gmax&&j+a<=g)
                {
                    gmax=j+a;
                    imax=i;
                }
            }
        }
        maxim+=a;
    }
    int s=gmax,nr=0;
    while(s>0)
    {
        nr++;
        fout<<x[imax]<<"\n";
        s-=x[imax];
        imax--;
    }
    fout.close();
    fout.open("ghiozdan.out",ios::out|ios::in);
    fout<<gmax<<" "<<nr;
}