Pagini recente » Cod sursa (job #3182826) | Cod sursa (job #933095) | Cod sursa (job #3139150) | Cod sursa (job #3133315) | Cod sursa (job #1419134)
#include <fstream>
#include <algorithm>
#define NMAX 101
using namespace std;
ifstream f("loto.in");
ofstream g("loto.out");
int v[NMAX*NMAX*NMAX], x[NMAX], i, j, k, n, s, ans1=-1, ans2=-1;
int cautbin(int st, int dr, int x)
{
int med;
while (st<=dr)
{
med=(st+dr)/2;
if (v[med]==x) return med;
else
if (x<v[med]) dr=med-1;
else
st=med+1;
}
return -1;
}
int main()
{
f>>n>>s;
for (i=1; i<=n; ++i)
f>>x[i];
int cont=0;
for (i=1; i<=n; ++i)
for (j=1; j<=n; ++j)
for (k=1; k<=n; ++k)
v[++cont]=x[i]+x[j]+x[k];
sort(v+1,v+cont+1);
for (i=1; i<=n*n*n; ++i)
if (cautbin(i,n*n*n,s-v[i])!=-1)
ans1=v[i], ans2=s-v[i];
if (ans1==-1) g<<"-1\n";
else
{
for (i=1; i<=n; ++i)
for (j=1; j<=n; ++j)
for (k=1; k<=n; ++k)
if (x[i]+x[j]+x[k]==ans1)
{
g<<x[i]<<" "<<x[j]<<" "<<x[k]<<" ";
i=j=k=n+1;
}
for (i=1; i<=n; ++i)
for (j=1; j<=n; ++j)
for (k=1; k<=n; ++k)
if (x[i]+x[j]+x[k]==ans2)
{
g<<x[i]<<" "<<x[j]<<" "<<x[k]<<" ";
i=j=k=n+1;
}
}
return 0;
}