Pagini recente » Cod sursa (job #2392305) | Cod sursa (job #654447) | Cod sursa (job #2550963) | Cod sursa (job #2058523) | Cod sursa (job #2693193)
#include <bits/stdc++.h>
using namespace std;
ifstream fin("loto.in");
ofstream fout("loto.out");
int v[105];
int poz,start;
struct puncte
{
int a,b,c,s;
} pct[200000];
int cautarebin(int val)
{
int mid,st,dr;
st=start;dr=poz;
while(st<=dr)
{
mid=(st+dr)/2;
if(pct[mid].s==val)return mid;
else if(pct[mid].s<val)st=mid+1;
else dr=mid-1;
}
return -1;
}
bool sortare(puncte A, puncte B)
{
return A.s<=B.s;
}
int main()
{
int n,suma,ok=0;
poz=0;
fin>>n>>suma;
for(int i=1; i<=n; i++)
fin>>v[i];
for(int i=1; i<=n; i++)
for(int j=i; j<=n; j++)
for(int k=j; k<=n; k++)
{
poz++;
pct[poz].a=v[i];
pct[poz].b=v[j];
pct[poz].c=v[k];
pct[poz].s=v[i]+v[j]+v[k];
}
sort(pct+1,pct+poz+1,sortare);
for(int i=1; i<=poz and ok==0; i++)
{
int cautat=suma-pct[i].s;
start=i;
int j=cautarebin(cautat);
if(j!=-1)
{
fout<<pct[i].a<<" "<<pct[i].b<<" "<<pct[i].c<<" "<<pct[j].a<<" "<<pct[j].b<<" "<<pct[j].c;
ok=1;
}
}
if(ok==0) fout<<-1;
return 0;
}