Pagini recente » Cod sursa (job #364765) | Cod sursa (job #2796426) | Cod sursa (job #2677281) | Cod sursa (job #2469381) | Cod sursa (job #307819)
Cod sursa(job #307819)
#include <iostream.h>
#include <algorithm>
#include <vector>
#include <stdio.h>
using namespace std;
struct tip
{long int a,b,c,s;} nr;
vector<tip> numbers;
vector<tip>::iterator it;
int n,i,j,k;
long int S,jumk;
bool cmp(tip o,tip p)
{return o.s<p.s;}
int main()
{long int lotnum[101],inc,sf,mij;
freopen("loto.in","r",stdin);freopen("loto.out","w",stdout);
scanf("%d %d",&n,&S);
for(i=1;i<=n;i++)
scanf("%ld",&lotnum[i]);
for(i=1;i<=n;i++)
for(j=i;j<=n;j++)
for(k=j;k<=n;k++)
{nr.a=lotnum[i];nr.b=lotnum[j];nr.c=lotnum[k];
nr.s=lotnum[i]+lotnum[j]+lotnum[k];
numbers.push_back(nr);}
sort(numbers.begin(),numbers.end(),cmp);
j=numbers.size()-1;
for(i=0;i<=j;i++)
{jumk=S-numbers[i].s;
inc=i;sf=j;mij=(i+j)/2;
while(inc<=sf)
{if(jumk<numbers[mij].s) {sf=mij-1;mij=(sf+inc)/2;}
else if(jumk>numbers[mij].s) {inc=mij+1;mij=(sf+inc)/2;}
else {printf("%ld %ld %ld %ld %ld %ld\n",numbers[i].a,numbers[i].b,numbers[i].c,numbers[mij].a,numbers[mij].b,numbers[mij].c);
fclose(stdout);fclose(stdin);return 0;}
}
}
printf("-1\n");fclose(stdin);fclose(stdout);
return 0;}