Cod sursa(job #2388489)

Utilizator CybotStancila Ionut-Marian Cybot Data 26 martie 2019 09:12:13
Problema Ghiozdan Scor 6
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.99 kb
#include <iostream>
#include <fstream>
using namespace std;
ifstream f("ghiozdan.in");
ofstream fout("ghiozdan.out");
int g[75001], v[75001], ob[75001], maxi, maxi2, urmator, k, n, G, i , j;

void citire()
{
    f>>n;
    f>>G;
    for (i=1;i<=n;i++)
    { f>>n;
      if (maxi<n) maxi=n;
      g[n]++;
    }
    for (i=1;i<=G;i++) v[i]=201;
}

void solve()
{
    v[0]=0;
    maxi2=0;
    for (i=maxi;i>=1;i--)
    {
        if (g[i]>0)
        { for (j=maxi2;j>=0;j--)
          { urmator=j;
            for (k=1; k<=g[i] && urmator+i<=G && v[urmator+i]>v[urmator]+1; k++)
            { v[urmator+i]=v[urmator]+1;
              ob[urmator+i]=urmator;
              if (urmator+i>maxi2) maxi2=urmator+i;
              urmator=urmator+i;
            }
          }
        }
    }
    fout<<maxi2<<" "<<v[maxi2];
    fout<<'\n';
    for (i=maxi2;i!=0;)
    { fout<<i-ob[i]<<'\n';
      i=ob[i];
    }
}

int main()
{
    citire();
    solve();
    return 0;
}