Pagini recente » Cod sursa (job #1750240) | Cod sursa (job #587092) | Cod sursa (job #1899554) | Cod sursa (job #2428079) | Cod sursa (job #403437)
Cod sursa(job #403437)
#include <fstream>
#include <cstdlib>
using namespace std;
int n,s,v[200],a[1000001];
ifstream f("loto.in");
ofstream o("loto.out");
int comp (const void *a,const void *b)
{
return *(int*)a-*(int*)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)
{
o<<v[i]<<" "<<v[j]<<" "<<v[k]<<" ";
return;
}
}
bool bsrc(int m)
{
int i,step;
for (step=1;step<=v[0];step<<= 1) {}
for (i=0;step;step>>=1)
if (i+step<=v[0] && a[i+step]<=s-a[m]) i+=step;
if (a[i]==s-a[m])
{
exe(a[i]);
exe(a[m]);
return true;
}
return false;
}
int main ()
{
int i,j,k;
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++)
a[v[0]++]=v[i]+v[j]+v[k];
qsort(a+1,v[0]+1,sizeof(a[0]),comp);
for (i=1;i<=v[0];i++)
if (bsrc(i)) return 0;
o<<"-1\n";
return 0;
}