Pagini recente » Cod sursa (job #873365) | Cod sursa (job #2939005) | Cod sursa (job #616721) | Cod sursa (job #2601624) | Cod sursa (job #1480594)
#include <fstream>
#include <algorithm>
#include <vector>
#define P 370003
using namespace std;
ifstream fin("loto.in");
ofstream fout("loto.out");
struct point
{
int i1,i2,i3;
};
point ind;
vector<int> h[370005];
int n,s,a[105],index[10];
bool ok = false;
int SearchSum(int sum)
{
int i,j,k;
for(i=1;i<=n;i++)
for(j=i;j<=n;j++)
for(k=j;k<=n;k++)
{
if(a[i]+a[j]+a[k]==sum)
{
ind.i1 = i;
ind.i2 = j;
ind.i3 = k;
return 1;
}
}
return 0;
}
void Solve()
{
int i,j,k,r,S,complement,t,sum;
for(i=1;i<=n;i++)
for(j=i;j<=n;j++)
for(k=j;k<=n;k++)
{
sum = a[i]+a[j]+a[k];
r = sum%P;
if(h[r].size()==0 || h[r][0]!=sum) h[r].push_back(sum);
}
for(i=1;i<=n && !ok;i++)
for(j=i;j<=n && !ok;j++)
for(k=j;k<=n && !ok;k++)
{
S =a[i]+a[j]+a[k];
complement = s-S;
if(complement>0)
{
r = complement%P;
for(t=0;t<h[r].size() && h[r][t]!=complement;t++);
if(t < h[r].size() && h[r][t]==complement)
{
index[1] = i;
index[2] = j;
index[3] = k;
t = SearchSum(complement);
index[4] = ind.i1;
index[5] = ind.i2;
index[6] = ind.i3;
ok = true;
}
}
}
}
int main()
{
fin>>n>>s;
for(int i=1;i<=n;i++) fin>>a[i];
Solve();
if(ok)
{
sort(index+1,index+7);
for(int i=1;i<=6;i++) fout<<index[i]<<" ";
fout<<"\n";
}
else fout<<"-1\n";
fout.close();
return 0;
}