Pagini recente » Cod sursa (job #1722422) | Cod sursa (job #791608) | Cod sursa (job #1349057) | Cod sursa (job #1734452) | Cod sursa (job #18400)
Cod sursa(job #18400)
#include <fstream.h>
ifstream f("ghiozdan.in");
ofstream f2("ghiozdan.out");
int n,g, o[20000];
void solve (unsigned int i, unsigned int gr[20000], unsigned int nr[20000])
{
int val;
if (i==n) {
gr[i]=o[i];
nr[i]=1;
}
else { for (int j=n;j>i;j--) {
if (((o[i]+gr[j])<=g)&&((o[i]+gr[j])>gr[i])) {
gr[i]=o[i]+gr[j];
nr[i]=nr[j]+1;
}
}
if (gr[i]==0) {
gr[i]=o[i];
nr[i]=1;
}
}
}
int main()
{
f>>n>>g;
unsigned int i,j,aux, aux2,gr[20000], nr[20000];
for (i=1;i<=n;i++) f>>o[i];
for (i=1;i<n;i++)
for (j=i+1;j<=n;j++)
if (o[i]>o[j]) {
aux=o[i];
o[i]=o[j];
o[j]=aux;
}
for (i=n;i>=1;i--) solve(i, gr, nr);
int poz;
aux=0;
for (i=1;i<=n;i++) if ((gr[i]<=g)&&(gr[i]>aux)) { aux=gr[i];poz=i;}
aux2=nr[poz];
for (i=1;i<=n;i++) if ((gr[i]==aux)&&(nr[i]<aux2)) {aux2=nr[i];poz=i;}
f2<<gr[poz]<<" "<<nr[poz];
f.close();
f2.close();
return 0;
}