Pagini recente » Rating Corman Alexandru Stefan (Corman_Alexandru_Stefan_325CC) | Cod sursa (job #2733078) | Cod sursa (job #2568593) | Cod sursa (job #536157) | Cod sursa (job #426225)
Cod sursa(job #426225)
#include <fstream>
#include <algorithm>
using namespace std;
int n,s,v[101],a[171701];
ifstream in("loto.in");
ofstream out("loto.out");
bool comp (int a,int b)
{
return a<b;
}
void exe(int c)
{
int i,j,k;
for (i=1;i<=n;i++)
for (j=i;j<=n;j++)
for (k=j;k<=n;k++)
if (v[i]+v[j]+v[k]==c)
{
out<<v[i]<<" "<<v[j]<<" "<<v[k]<<" ";
return;
}
}
bool bsearch(int m)
{
int i,step=1<<22,sum=s-a[m];
for (i=0;step;step>>=1)
if (i+step<=v[0] && a[i+step]<=sum) i+=step;
if (a[i]==sum)
{
exe(a[i]);
exe(a[m]);
return true;
}
return false;
}
int main ()
{
int i,j,k;
in>>n>>s;
for (i=1;i<=n;i++)
in>>v[i];
for (i=1;i<=n;i++)
for (j=i;j<=n;j++)
for (k=j;k<=n;k++)
a[++v[0]]=v[i]+v[j]+v[k];
sort(a+1,a+v[0]+1,comp);
for (i=1;i<=v[0];i++)
if (bsearch(i)) return 0;
out<<"-1\n";
return 0;
}