Pagini recente » Cod sursa (job #2207973) | Cod sursa (job #1140159) | Cod sursa (job #1155978) | Cod sursa (job #232602) | Cod sursa (job #680199)
Cod sursa(job #680199)
#include<stdio.h>
#include<algorithm>
using namespace std;
struct sume
{
int suma , first , second , third;
};
sume s[1000001];
int n , i , x , a[101];
bool comp(sume a , sume b)
{
return a.suma>b.suma;
}
int cautbinar(int x)
{
int i,pas=1<<19,nr=s[0].suma;
for(i=0;pas!=0;pas>>=1)
{
if(i+pas<=nr && s[i+pas].suma<=x) i += pas;
}
if(s[i].suma!=x) return -1;
return i;
}
int main()
{
freopen("loto.in","r",stdin);
freopen("loto.out","w",stdout);
scanf("%d%d",&n,&x);
for(i=1;i<=n;i++)
{
scanf("%d",&a[i]);
}
int i1 , i2;
for(i=1;i<=n;i++)
{
for(i1=i;i<=n;i++)
{
for(i2=i1;i<=n;i++)
{
s[++s[0].suma].suma=a[i]+a[i1]+a[i2];
s[s[0].suma].first=i;
s[s[0].suma].second=i1;
s[s[0].suma].third=i2;
}
}
}
int rez;
sort(s+1,s+1+s[0].suma,comp);
for(i=1;i<=s[0].suma;i++)
{
rez=cautbinar(x-s[i].suma);
if(rez!=-1)
{
printf("%d %d %d ",s[i].first,s[i].second, s[i].third);
printf("%d %d %d ",s[rez].first,s[rez].second, s[rez].third);
return 0;
}
}
printf("-1");
}