Pagini recente » Cod sursa (job #15004) | Cod sursa (job #1130051) | Cod sursa (job #1778542) | Cod sursa (job #1234802) | Cod sursa (job #1770866)
#include <fstream>
#include <algorithm>
/*#define s first.first;
#define a first.second;
#define b second.first;
#define c second.second;*/
using namespace std;
ifstream f("loto.in");
ofstream g("loto.out");
//pair<pair<int,int>,pair<int,int> > v[100002];
struct elem
{
int s;
int a;
int b;
int c;
} v[1000002];
int cmp(const elem &A, const elem &B)
{
if(A.s!=B.s)
{
return A.s < B.s;
}
else
{
if(A.a!=B.a)
return A.a<B.a;
else
{
if(A.b!=B.b)
return A.b<B.b;
else
{
return A.c<B.c;
}
}
}
}
int n,ss,kk,i,j,k,mij,st,dr,ok,u[102],val;
int main()
{
f>>n>>ss;
for(i=1; i<=n; i++)
{
f>>u[i];
}
for(i=1; i<=n; i++)
{
for(j=1; j<=n; j++)
{
for(k=1; k<=n; k++)
{
v[++kk].s=u[i]+u[j]+u[k];
v[kk].a=u[i];
v[kk].b=u[j];
v[kk].c=u[k];
}
}
}
sort(v+1, v+kk+1, cmp);
for(i=1; i<=kk; i++)
{
st=1;
dr=kk;
val=ss-v[i].s;
while(st<dr)
{
mij=(st+dr)/2;
if(v[mij].s==val)
{ok=1;break;}
else
{
if(v[mij].s<val)
{
st=mij+1;
}
else
dr=mij-1;
}
}
if(ok==1)
break;
}
if(ok==1)
{
g<<v[i].a<<" "<<v[i].b<<" "<<v[i].c<<" "<<v[mij].a<<" "<<v[mij].b<<" "<<v[mij].c;
}
else
g<<"-1";
return 0;
}