Pagini recente » Cod sursa (job #263589) | Cod sursa (job #1029612) | Cod sursa (job #14732) | Cod sursa (job #2110370) | Cod sursa (job #2049534)
#include <bits/stdc++.h>
using namespace std;
ifstream fin ("loto.in");
ofstream fout ("loto.out");
int a[101];
struct valori
{
int suma;
vector <int> v;
};
vector <valori> vals[1000001];
int modulo = 999983;
void inserare (int suma, int suma_mod, int i, int j, int k)
{
for ( auto x:vals[suma_mod] )
if ( x.suma == suma )
return ;
valori rand;
rand.suma = suma;
rand.v.push_back(i);
rand.v.push_back(j);
rand.v.push_back(k);
vals[suma_mod].push_back(rand);
}
bool diferenta(int dif, int dif_mod)
{
for ( auto x:vals[dif_mod] )
if ( x.suma == dif )
{
for ( auto y:x.v )
fout<<a[y]<< " ";
return true;
}
return false;
}
int main()
{
int n, s;
fin>>n>>s;
for ( int i = 0; i < n; ++i )
fin>>a[i];
for ( int i = 0; i < n; ++i )
{
for ( int j = 0; j < n; ++j )
{
for ( int k = 0; k < n; ++k )
{
int suma = a[i]+a[j]+a[k];
int suma_mod = suma%modulo;
int dif_mod = (s - suma)%modulo;
inserare (suma, suma_mod, i, j, k);
if ( s - suma >= 0 && diferenta (s-suma, dif_mod) == true )
{
fout<<a[i]<<" "<<a[j]<<" "<<a[k];
return 0;
}
}
}
}
fout<<-1;
}