Pagini recente » Cod sursa (job #3182790) | Cod sursa (job #1657691) | Cod sursa (job #1171585) | Cod sursa (job #771228) | Cod sursa (job #1040852)
#include <iostream>
#include <fstream>
using namespace std;
unsigned long b[101];
void merge(int st, int x, int dr)
{
int i,j,nr=0,a[500001];
i=st;
j=x+1;
while (i<=x && j<=dr)
{
if (b[i]<b[j])
{
a[++nr]=b[i];
i++;
}
else
{
a[++nr]=b[j];
j++;
}
}
while (i<=x)
{
a[++nr]=b[i];
i++;
}
while (j<=dr)
{
a[++nr]=b[j];
j++;
}
nr=0;
for (i=st;i<=dr;i++)
b[i]=a[++nr];
}
void mergesort(int s, int d)
{
int x;
if ((d-s)<1)
return;
else
{
x=(s+d)/2;
mergesort(s,x);
mergesort(x+1,d);
merge(s,x,d);
}
}
int main()
{
int n,i,j=0,ok=0;
long long x,s;
ifstream f("input.txt");
f>>n>>s;
for (i=1;i<=n;i++)
{
f>>x;
if (x<=s)
b[++j]=x;
}
f.close();
mergesort(1,j);
ofstream g("output.txt");
for (int i1=1;i1<=j && ok==0;i1++)
for (int i2=1;i2<=j && b[i1]+b[i2]<=s && ok==0;i2++)
for (int i3=1;i3<=j && b[i1]+b[i2]+b[i3]<=s && ok==0;i3++)
for (int i4=1;i4<=j && b[i1]+b[i2]+b[i3]+b[i4]<=s && ok==0;i4++)
for (int i5=1;i5<=j && b[i1]+b[i2]+b[i3]+b[i4]+b[i5]<=s && ok==0;i5++)
for (int i6=1;i6<=j && b[i1]+b[i2]+b[i3]+b[i4]+b[i5]+b[i6]<=s && ok==0;i6++)
if (b[i1]+b[i2]+b[i3]+b[i4]+b[i5]+b[i6]==s)
{
g<<b[i1]<<" "<<b[i2]<<" "<<b[i3]<<" "<<b[i4]<<" "<<b[i5]<<" "<<b[i6];
ok=1;
}
if (ok==0)
g<<-1;
g.close();
return 0;
}