Pagini recente » Cod sursa (job #383694) | Cod sursa (job #960786) | Cod sursa (job #2675517) | Cod sursa (job #2758008) | Cod sursa (job #1555336)
#include <iostream>
#include <fstream>
#include<algorithm>
using namespace std;
ifstream in("loto.in");
ofstream out("loto.out");
struct tip
{
long suma;
long a, b, c;
}sume[105];
int n, v[105],elem[7];
long long s;
int cauta(long x, long &r, long &s, long &t, long li, long ls)
{
if(li>ls)
return -1;
else
{
long mij=(li+ls)/2;
if(sume[mij].suma==x)
{
r=sume[mij].a;
s=sume[mij].b;
t=sume[mij].c;
return 1;
}
else
if(x<v[mij])
return cauta(x,r,s,t,li,mij);
else
return cauta(x,r,s,t,mij+1,ls);
}
}
int main()
{
in>>n>>s;
long i,j,k,p=1,ok=0,p1=0,p2=0,p3=0,p4=0,p5=0,p6=0;
long ss=0;
for(i=1;i<=n;i++)
in>>v[i];
for(i=1;i<=n;i++)
for(j=1;j<=n;j++)
for(k=1;k<=n;k++)
{
sume[p].suma=v[i]+v[j]+v[k];
sume[p].a=v[i];
sume[p].b=v[j];
sume[p].c=v[k];
p++;
}
for(i=1;i<=n && !ok;i++)
for(j=1;j<=n &&!ok;j++)
for(k=1;k<=n && !ok;k++)
{
ss=v[i]+v[j]+v[k];
if(cauta(s-ss,p4,p5,p6,1,n)==1)
{
ok=1;
p1=v[i];
p2=v[j];
p3=v[k];
}
}
if(!ok)
out<<"-1";
else
{
elem[1]=p1;
elem[2]=p2;
elem[3]=p3;
elem[4]=p4;
elem[5]=p5;
elem[6]=p6;
sort(elem+1,elem+7);
for(i=1;i<=6;i++)
out<<elem[i]<<' ';
}
in.close();
out.close();
return 0;
}