Pagini recente » Cod sursa (job #173015) | Cod sursa (job #3137644) | Cod sursa (job #1298237) | Cod sursa (job #2500675) | Cod sursa (job #1058093)
#include <iostream>
#include <fstream>
using namespace std;
struct nr
{
int a,b,c,sum;
};
void quicksort(nr v[], int l, int r)
{
int i,j,p;
nr aux;
i=l;
j=r;
p=v[(l+r)/2].sum;
while (i<=j)
{
while (v[i].sum<p)
i++;
while (v[j].sum>p)
j--;
if (i<=j)
{
aux=v[i];
v[i]=v[j];
v[j]=aux;
i++;
j--;
}
}
if (l<j)
quicksort(v,l,j);
if (i<r)
quicksort(v,i,r);
}
int cb(nr v[], int n, int x)
{
int st=1,dr=n,m;
while(st<=dr)
{
m=(st+dr)/2;
if(x==v[m].sum)
return m;
else
if(x<v[m].sum)
dr=m-1;
else
st=m+1;
}
return -1;
}
int main()
{
int n,i,j,k,s,x,p=0,ok=0,v[101];
nr e[1000001];
ifstream f("loto.in");
ofstream g("loto.out");
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++)
{
p++;
e[p].a=v[i];
e[p].b=v[j];
e[p].c=v[k];
e[p].sum=v[i]+v[j]+v[k];
}
quicksort(e,1,p);
for (i=1;i<=p && ok==0;i++)
{
x=cb(e,p,s-e[i].sum);
if (x!=-1)
{
g<<e[i].a<<" "<<e[i].b<<" "<<e[i].c<<" "<<e[x].a<<" "<<e[x].b<<" "<<e[x].c;
ok=1;
}
}
if (ok==0)
g<<-1;
f.close();
g.close();
return 0;
}