Pagini recente » Cod sursa (job #3242523) | Cod sursa (job #102419) | Cod sursa (job #2436862) | Cod sursa (job #1841150) | Cod sursa (job #1475062)
#include <fstream>
#include <algorithm>
using namespace std;
int n,i,j,s,k,v[105],sume[1000005],poz,val,st,dr,mij,x1,x2,x3,x4,x5,x6;
bool gasit;
int main()
{
ifstream f("loto.in");
ofstream g("loto.out");
f>>n>>s;
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++) sume[++poz]=v[i]+v[j]+v[k];
sort(sume+1,sume+poz+1);
for(i=1;i<=n && !gasit;i++)
for(j=i;j<=n && !gasit;j++)
for(k=j;k<=n && !gasit;k++)
{
val=s-v[i]-v[j]-v[k];
st=1,dr=poz;
while(st<=dr)
{
mij=(st+dr)/2;
if(sume[mij]==val) {x1=v[i],x2=v[j],x3=v[k],gasit=true; break;}
else if(sume[mij]<val) st=mij+1;
else dr=mij-1;
}
}
if(gasit==false) g<<-1;
if(gasit)
{
g<<x1<<" "<<x2<<" "<<x3<<" ";
val=s-x1-x2-x3;
gasit=false;
for(i=1;i<=n && !gasit;i++)
for(j=i;j<=n && !gasit;j++)
for(k=j;k<=n && !gasit;k++)
{
if(v[i]+v[j]+v[k]==val) {x4=v[i],x5=v[j],x6=v[k],gasit=true; break;}
// st=1,dr=poz;
// while(st<=dr)
// {
// mij=(st+dr)/2;
// if(sume[mij]==val) {x1=v[i],x2=v[j],x3=v[k],gasit=true; break;}
// else if(sume[mij]<val) st=mij+1;
// else dr=mij-1;
// }
}
g<<x4<<" "<<x5<<" "<<x6;
}
f.close();
g.close();
return 0;
}