Pagini recente » Cod sursa (job #251746) | Cod sursa (job #2262671) | Cod sursa (job #1190092) | Cod sursa (job #409924) | Cod sursa (job #1209848)
#include <fstream>
#include <algorithm>
using namespace std;
int v[101],s[1000002],i,j,k,n,suma,nr=0,sol1,sol2;
bool 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+1,n*n*n,suma-s[i])==1)
{
sol1=s[i];
sol2=suma-s[i];
break;
}
else sol1=-1;
// g<<sol1<<" "<<sol2;
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;
}