Pagini recente » Cod sursa (job #2267838) | Cod sursa (job #2410907) | Cod sursa (job #1142698) | Cod sursa (job #1862734) | Cod sursa (job #2663115)
#include <bits/stdc++.h>
using namespace std;
ifstream f ("loto.in");
ofstream g ("loto.out");
const int P = 370003;
int n,s;
int a[105];
vector <int> h[P+5];
int ind[10];
void citire ()
{
f>>n>>s;
for(int i=1;i<=n;++i)
f>>a[i];
}
void afisare()
{
sort(ind+1,ind+7);
for(int i=1;i<=6;++i)
g<<a[ind[i]]<<" ";
g<<"\n";
}
bool cauta (int x)
{
int r=x%P;
for(auto it: h[r])
if(it==x)
return true;
return false;
}
void adauga(int x)
{
int r=x%P;
if(!cauta(x))
h[r].push_back(x);
}
void gasesteIndici(int sum)
{
for(int i=1;i<=n;++i)
for(int j=i;j<=n;++j)
for(int k=j;k<=n;++k)
{
if(a[i]+a[j]+a[k]==sum)
{
ind[4]=i;
ind[5]=j;
ind[6]=k;
return ;
}
}
}
void rezolvare ()
{
for(int i=1;i<=n;++i)
for(int j=i;j<=n;++j)
for(int k=j;k<=n;++k)
adauga(a[i]+a[j]+a[k]);
for(int i=1;i<=n;++i)
for(int j=i;j<=n;++j)
for(int k=j;k<=n;++k)
{
int sumacurenta=a[i]+a[j]+a[k];
int complement=s-sumacurenta;
if(complement>0 && cauta(complement))
{
ind[1]=i;
ind[2]=j;
ind[3]=k;
gasesteIndici(complement);
afisare();
return ;
}
}
g<<-1;
}
int main()
{
citire();
rezolvare();
return 0;
}