Cod sursa(job #1618915)

Utilizator raduzxstefanescu radu raduzx Data 28 februarie 2016 09:12:54
Problema Ghiozdan Scor 30
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.99 kb
#include <fstream>

using namespace std;
#define nmax 20002
#define gmax 75002
int d1[gmax],d2[gmax];
int n1[gmax],n2[gmax];
int gr[nmax],c[nmax];
int main()
{
    ifstream f("ghiozdan.in");
    ofstream g("ghiozdan.out");
    int n,gre,i,j;
    f>>n>>gre;
    for(i=1;i<=n;i+=1)
    {
        f>>gr[i];
    }
    for(i=1;i<=n;i+=1)
    {
        for(j=1;j<=gre;j+=1)
        {
           d2[j]=d1[j];
           n2[j]=n1[j];
           if(gr[i]<=j)
           {
               if(d2[j]<d1[j-gr[i]]+gr[i])
               {
                   d2[j]=d1[j-gr[i]]+gr[i];
                   n2[j]=n1[j-gr[i]]+1;
               }
               else
                if(d2[j]==d1[j-gr[i]]+gr[i] and n2[j]>n1[j-gr[i]]+1)
                    n2[j]=n1[j-gr[i]]+1;
           }
        }
         for(j=1;j<=gre;j+=1)
         {
             d1[j]=d2[j];
             n1[j]=n2[j];
         }
    }
    g<<d2[gre]<<" "<<n2[gre];
    f.close();
    g.close();
    return 0;
}