Pagini recente » Cod sursa (job #38061) | Cod sursa (job #3269689) | Cod sursa (job #676118) | Cod sursa (job #2978335) | Cod sursa (job #1003303)
#include<stdio.h>
#include<vector>
#include<algorithm>
#include<limits.h>
using namespace std;
vector <int> Ghiozdan,Obj;
long n,gr;
long a[20001][20001];
/*void rez(int i,long Gmax,int Nmin)
{
if(i<0)
return;
int gre=0,nr=0;
for(;i>=0 && gre+Obj[i]<=gr;i--)
{
gre+=Obj[i];
Ghiozdan.push_back(Obj[i]);
nr++;
}
if(gre>Gmax)
rez(i,gre,nr)
}*/
void din()
{
int i,j,kor=0,Gmax=0,Nmin=INT_MAX,indexi,indexj,indexkor;
for(i=0;i<n;i++)
for(j=0;j<i;j++)
{
a[i][j]=Obj[i]+Obj[j];
if(a[i][j]>Gmax && a[i][j]<=gr)
{
Gmax=a[i][j];
Nmin=2+kor;
indexi=i;
indexj=j;
indexkor=kor;
}
}
kor++;
while(kor<n)
{
for(i=kor;i<n;i++)
for(j=kor;j<i;j++)
{
a[i][j]=a[i][j-1]+Obj[j];
if(a[i][j]>Gmax && a[i][j]<=gr)
{
Gmax=a[i][j];
Nmin=2+kor;
indexi=i;
indexj=j;
indexkor=kor;
}
}
kor++;
}
if(indexkor==0)
printf("%d %d\n%ld\n%ld",Gmax,Nmin,Obj[indexi],Obj[indexj]);
else
{
printf("%d %d\n%ld\n",Gmax,Nmin,Obj[indexi]);
for(i=indexj;indexkor+1>=0;indexkor--,i--)
printf("%ld\n",Obj[i]);
}
}
int main()
{
long i;
int s;
freopen("ghiozdan.in","r",stdin);
freopen("ghiozdan.out","w",stdout);
scanf("%ld %ld",&n,&gr);
for(i=0;i<n;i++)
{
scanf("%d",&s);
Obj.push_back(s);
}
sort(Obj.begin(),Obj.end());
din();
/*for(i=0;i<=n;i++)
{
for(int j=0;j<=n;j++)
printf("%ld ",a[i][j]);
printf("\n");
}*/
}