Pagini recente » Cod sursa (job #938950) | Cod sursa (job #2064954) | Cod sursa (job #9956) | Cod sursa (job #1722767) | Cod sursa (job #2381436)
#include <bits/stdc++.h>
using namespace std;
ifstream in ("loto.in");
ofstream out ("loto.out");
int main()
{
int n,s,v[100001],sume[100001],cnt=1;
int v1[100001],v2[100001],v3[100001];
in>>n>>s;
for (int i=1;i<=n;++i)
in>>v[i];
sort (v+1,v+n+1);
for (int i=1;i<=n;++i)
for (int k=i;k<=n;++k)
for (int j=k;j<=n;++j)
{
sume[cnt]=v[i]+v[j]+v[k];
v1[cnt]=v[i];
v2[cnt]=v[j];
v3[cnt++]=v[k];
}
for (int i=1;i<=n;++i)
for (int k=i;k<=n;++k)
for (int j=k;j<=n;++j)
{
int s1=s-(v[i]+v[j]+v[k]);
int l=1,r=(n+1)*(n+2)/2,ok=0,x,ok1=0;
while (l<=r)
{
int mid=(l+r)/2;
if (sume[mid]==s1)
{
x=sume[mid];
ok=mid;//loc unde am gasit suma
ok1=1;
}
if (v[mid]<s1)
l=mid+1;
else
r=mid-1;
}
if (ok1==1 || j==n)
{
int x1,x2,x3;
x1=v1[ok];
x2=v2[ok];
x3=v3[ok];
int ver=v[x1]+v[x2]+v[x3]+v[i]+v[j]+v[k];
if (ver==s)
{
out<<v[i]<<' '<<v[j]<<' '<<v[k]<<' '<<v[x1]<<' '<<v[x2]<<' '<<v[x3];
return 0;
}
else
{
out<<-1;
return 0;
}
}
}
}