Cod sursa(job #1075321)

Utilizator vyrtusRadu Criuleni vyrtus Data 8 ianuarie 2014 20:57:10
Problema Ghiozdan Scor 10
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.99 kb
#include <fstream>
#include <iostream>

using namespace std;

ifstream f("ghiozdan.in");
ofstream g("ghiozdan.out");

int n,gr;
int a[20001],item[75001],final[20001];
long rez[75001];

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

 for (int i=0;i<=gr;i++)
 {
     rez[i] = 0;
     item[i] = 0;
 }

   for (int i=1;i<=n;i++)
   {
       for (int j=gr;j>=a[i];--j)
       {
           if (j-a[i] >= 0 && (rez[j-a[i]] != 0 || j-a[i] == 0))
           {
                if (item[j] < a[i])
                {
               rez[j] = 1;
               item[j] = a[i];
                break;
                }
           }
       }
   }

     while (rez[gr] == 0) { gr--; }

     g << gr << " ";
     int poz=0;
      while (gr != 0)
      {
          poz++;
          final[poz] = item[gr];
           gr -= item[gr];
      }

  g << poz << "\n" ;

    for (int i=1;i<=poz;++i)
         g << final[i] << "\n";

    return 0;
}