Mai intai trebuie sa te autentifici.
Cod sursa(job #846545)
Utilizator | Data | 2 ianuarie 2013 13:42:49 | |
---|---|---|---|
Problema | Ghiozdan | Scor | 60 |
Compilator | cpp | Status | done |
Runda | Lista lui wefgef | Marime | 0.66 kb |
#include<fstream>
#include<vector>
#include<algorithm>
#define MA 1999999999
using namespace std;
ifstream f("ghiozdan.in");
ofstream g("ghiozdan.out");
int T[76000],n,G,D[76000],i,x,k,v[210],j;
int main ()
{
f>>n>>G;
for(i=1;i<=G;++i)
D[i]=MA;
for(i=1;i<=n;++i)
{
f>>x;
if(x<=G)
v[x]++;
}
for(i=200;i>=1;--i)
if(v[i])
for(k=1;k<=v[i];++k)
for(j=G-k*i;j>=0;--j)
if(D[j]!=MA&&D[j+k*i]==MA)
{
D[j+k*i]=D[j]+k;
T[j+k*i]=j+(k-1)*i;
}
for(i=G;i>=1;i--)
{
if(D[i]!=MA)
{
g<<i<<" "<<D[i]<<"\n";
g<<i-T[i]<<"\n";
while(T[i])
{
i=T[i];
g<<i-T[i]<<"\n";
}
return 0;
}
}
}