Cod sursa(job #1076758)

Utilizator vyrtusRadu Criuleni vyrtus Data 10 ianuarie 2014 15:49:47
Problema Ghiozdan Scor 60
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.93 kb
#include <fstream>
#include <iostream>

using namespace std;

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

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

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

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

 rez[0] = 1;
 int i,j,k;
   for (i=200;i>=1;--i)
   {
       if (a[i])
       {
      for (j=1;j<=a[i];j++)
       {
           for (k=gr;k>=0;k--)
               if ( k-i >= 0 && rez[k-i] && i>final[k]) { rez[k] = 1; final[k] = i; }
       }
       }
   }

    while (!rez[gr]) {gr--;}
     g << gr << " ";
     int poz=0;
     while (gr)
     {
         poz++;
         item[poz] = final[gr];
         gr -= final[gr];
     }
     g << poz << "\n";
     for (int i=1;i<=poz;++i)
        g << item[i] << "\n";

    return 0;
}