Pagini recente » Cod sursa (job #974235) | Cod sursa (job #1744302)
#include <fstream>
#include <algorithm>
#define NR 105
#define VAL 1000005
using namespace std;
ifstream fin("loto.in");
ofstream fout("loto.out");
struct suma
{
int sum;
int a;
int b;
int c;
};
suma s[VAL];
int N, S, i, M, ans;
int v[NR], j, k;
bool cmp(suma x, suma y)
{
return x.sum<y.sum;
}
int cautbin(int x)
{
int be=1;
int en=M;
int mid, ans;
ans=-1;
while (be<=en)
{
mid=(be+en) / 2;
if (s[mid].sum==x)
{
ans=mid;
break;
}
if (s[mid].sum<x)
be=mid+1;
else
en=mid-1;
}
return ans;
}
int main()
{
fin >> N >> S;
for (i=1; i<=N; i++)
fin >> v[i];
for (i=1; i<=N; i++)
{
for (j=1; j<=N; j++)
{
for (k=1; k<=N; k++)
{
s[++M].sum=v[i]+v[j]+v[k];
s[M].a=v[i];
s[M].b=v[j];
s[M].c=v[k];
}
}
}
sort(s+1, s+M+1, cmp);
for (i=1; i<=M; i++)
{
ans=cautbin(S-s[i].sum);
if (ans!=-1)
{
fout << s[i].a << " " << s[i].b << " " << s[i].c << " ";
fout << s[ans].a << " " << s[ans].b << " " << s[ans].c << '\n';
break;
}
}
if (ans==-1)
fout << ans << '\n';
fin.close();
fout.close();
return 0;
}