Pagini recente » Cod sursa (job #602746) | Cod sursa (job #2241645) | Cod sursa (job #2072991) | Cod sursa (job #209729) | Cod sursa (job #2498047)
#include <bits/stdc++.h>
#define newline '\n'
#define ll long long
#define uns unsigned
#define deb(x) cerr << x << ' '
#define debnewL(x) cerr << x << newline
using namespace std;
///************************************
ifstream fin("loto.in");
ofstream fout("loto.out");
///************************************
const uns P = 370003;
int n, S;
vector <int> h[P + 2];
int v[105];
vector <int> ans;
inline void Read()
{
fin >> n >> S;
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++)
{
int s = v[i] + v[j] + v[k];
h[s % P].push_back(s);
}
}
inline void Solve()
{
for (int i = 1; i <= n; i++)
for (int j = i; j <= n; j++)
for (int k = j; k <= n; k++)
{
int s = v[i] + v[j] + v[k];
int dif = S - s;
if (dif <= 0)
continue;
int r = dif % P;
for (int t = 0; t < h[r].size(); t++)
if (h[r][i] == dif)
{
for (int ii = 1; ii <= n; ii++)
for (int jj = ii; jj <= n; jj++)
for (int kk = jj; kk <= n; kk++)
if (v[ii] + v[jj] + v[kk] == dif)
{
ans.push_back(i);
ans.push_back(j);
ans.push_back(k);
ans.push_back(ii);
ans.push_back(jj);
ans.push_back(kk);
return;
}
}
}
fout << -1;
}
int main()
{
Read();
Solve();
if (ans.size())
{
sort(ans.begin(), ans.end());
for (int i = 0; i < ans.size(); i++)
fout << ans[i] << ' ';
}
return 0;
}