Pagini recente » Cod sursa (job #1142941) | Cod sursa (job #1101842) | Cod sursa (job #2059348) | Cod sursa (job #1029066) | Cod sursa (job #1372371)
#include <fstream>
#include <iostream>
#include <algorithm>
using namespace std;
long long v[105],s[1000005],i,j,k,n,suma,nr=0,sol1,sol2,cont=1;
int cb(int st, int dr, int x)
{
int med;
while (st<=dr)
{
med=(st+dr)/2;
if (s[med]==x)
return 1;
else
if (x>s[med])
st=med+1;
else
dr=med-1;
}
return 0;
}
int main()
{
ifstream f("loto.in");
ofstream g("loto.out");
f>>n>>suma;
for (i=1; i<=n; i++) f>>v[i];
for (i=1;i<=n;i++)
for (j=i;j<=n;j++)
for (k=j;k<=n;k++)
{
nr++;
s[nr]=v[i]+v[j]+v[k];
}
sort(s+1,s+n*n*n+1);
for (i=1; i<=n*n*n; i++)
if (cb(i,n*n*n,suma-s[i])==1 && s[i]!=suma)
{
sol1=s[i];
sol2=suma-s[i];
break;
}
else sol1=-1;
if (sol1!=-1)
{
for (i=1; i<=n; i++)
for (j=i; j<=n; j++)
for (k=j; k<=n; k++)
if (v[i]+v[j]+v[k]==sol1)
{
g<<v[i]<<" "<<v[j]<<" "<<v[k]<<" ";
break;
}
for (i=1; i<=n; i++)
for (j=i; j<=n; j++)
for (k=j; k<=n; k++)
if (v[i]+v[j]+v[k]==sol2)
{
g<<v[i]<<" "<<v[j]<<" "<<v[k]<<" ";
break;
}
}
else g<<"-1";
return 0;
}