Cod sursa(job #1670221)
| Utilizator | Data | 31 martie 2016 16:17:20 | |
|---|---|---|---|
| Problema | Ghiozdan | Scor | 100 |
| Compilator | cpp | Status | done |
| Runda | Arhiva de probleme | Marime | 0.75 kb |
#include <fstream>
using namespace std;
ifstream f("ghiozdan.in");
ofstream g("ghiozdan.out");
int n,gr,x,i,j,k,v[75001],t[75001],b[75001];
int main()
{ f>>n>>gr;
for (i=1;i<=n;++i) {
f>>x;
++v[x];}
b[0]=1;
for (i=200;i>=1;--i)
if (v[i]!=0)
for (k=gr-i;k>=0;--k)
if (b[k]!=0)
for (j=1;j<=v[i] && k+i*j<=gr;++j)
if (b[k+i*j]==0) {
b[k+i*j]=b[k]+j;
t[k+i*j]=i;}
else
break;
while (b[gr]==0)
--gr;
g<<gr<<" "<<b[gr]-1;
while (b[gr]!=1) {
g<<'\n'<<t[gr];
gr-=t[gr];
}
return 0;
}
