Pagini recente » Cod sursa (job #610932) | Cod sursa (job #87435) | Cod sursa (job #2877460) | Cod sursa (job #1599552) | Cod sursa (job #2038593)
#include <bits/stdc++.h>
using namespace std;
int v[101];
struct cheieuri
{
int suma;
vector <int> v;
};
vector <cheieuri> cheie[1000001];
const int MOD = 1000000;
ofstream fout ("loto.out");
void baga (int sum, int sum_mod, int i, int j, int k)
{
bool ok = true;
for (auto x:cheie[sum_mod])
if (x.suma == sum)
ok = false;
if (ok == false)
return ;
cheieuri nou;
nou.suma = sum;
nou.v.push_back(i);
nou.v.push_back(j);
nou.v.push_back(k);
cheie[sum_mod].push_back(nou);
}
bool cauta (int dif, int dif_mod)
{
for (auto x:cheie[dif_mod])
if (x.suma == dif)
{
for (auto y:x.v)
fout << v[y] << ' ';
return true;
}
return false;
}
int main(int argc, char const *argv[])
{
ifstream fin ("loto.in");
int n, s;
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 sum = v[i]+v[j]+v[k];
int sum_mod = sum%MOD;
int dif_mod = (s - sum)%MOD;
baga (sum, sum_mod, i, j, k);
if (cauta (s - sum, dif_mod) == true)
{
fout << v[i] << ' ' << v[j] << ' ' << v[k];
return 0;
}
}
fout << "-1";
return 0;
}