Pagini recente » Cod sursa (job #1286306) | Cod sursa (job #2456370) | Cod sursa (job #86538) | Cod sursa (job #1167321) | Cod sursa (job #1369178)
#include <fstream>
#include <vector>
#include <set>
#include <algorithm>
#define nmax 105
#define hash 66013
using namespace std;
ifstream f("loto.in");
ofstream g("loto.out");
int n,m,s,s1;
int a[nmax],pmax=1<<29;
int l[nmax*nmax*nmax];
int cautbin(int x)
{
int q=0,p=pmax;
for (p=pmax;p>=1;p=p>>1)
if (p+q<=m&&l[q+p]<=x)
q+=p;
if (x==l[q])
return q;
return -1;
}
int main()
{
int i,j,k,i1,j1,k1,t;
f>>n>>s;
for (i=1;i<=n;i++)
f>>a[i];
for (i=1;i<=n;i++)
for (j=1;j<=n;j++)
for (k=1;k<=n;k++)
l[++m]=a[i]+a[j]+a[k];
sort(l+1,l+m+1);
for (i=1;i<=n;i++)
for (j=1;j<=n;j++)
for (k=1;k<=n;k++)
if (s>=a[i]+a[j]+a[k]) {
s1=s-a[i]-a[j]-a[k];
t=cautbin(s1);
if (t!=-1) {
for (i1=1;i1<=n;i1++)
for (j1=1;j1<=n;j1++)
for (k1=1;k1<=n;k1++)
if (a[i1]+a[j1]+a[k1]==s1) {
g<<i<<' '<<j<<' '<<k<<' '<<i1<<' '<<j1<<' '<<k1<<'\n';
return 0;
}
}
}
g<<-1<<'\n';
return 0;
}