Pagini recente » Cod sursa (job #101383) | Cod sursa (job #769557) | Cod sursa (job #1808834) | Cod sursa (job #2256214) | Cod sursa (job #1582554)
#include <iostream>
#include <fstream>
#include <algorithm>
using namespace std;
ifstream fin("loto.in");
ofstream fout("loto.out");
struct str{
int s;
int p1, p2, p3;
} v[1000];
int n, s, slen, x[101];
void read()
{
fin>>n>>s;
for(int i=1;i<=n;i++)
fin>>x[i];
}
bool srt(str a, str b)
{
return a.s<b.s;
}
int findSum(int x)
{
int pos=-1;
int left = 1, right = slen;
while(left<=right)
{ int mid = (left + right) / 2;
if(v[mid].s < x) left = mid+1;
else if(v[mid].s > x) right = mid-1;
else return mid;
}
return -1;
}
void formStruct()
{
for(int i=1;i<=n;i++)
for(int j=i;j<=n;j++)
for(int k=j;k<=n;k++)
{
v[++slen].s=x[i]+x[j]+x[k];
v[slen].p1=x[i];
v[slen].p2=x[j];
v[slen].p3=x[k];
}
}
int main()
{
read();
sort(v+1, v+n+1, srt);
formStruct();
for(int i=1;i<=n;i++)
for(int j=i;j<=n;j++)
for(int k=j;k<=n;k++)
{
int sum = s-x[i]-x[k]-x[j];
int ok = findSum(sum);
if(ok != -1)
{
fout<<x[i]<<" "<<x[j]<< " " << x[k]<<" "<<v[ok].p1<<" "<<v[ok].p2<<" "<<v[ok].p3;
return 0;
}
}
fout<<-1;
return 0;
}