Pagini recente » Cod sursa (job #3306590) | Cod sursa (job #1979749) | Cod sursa (job #3306593) | Cod sursa (job #492360) | Cod sursa (job #854356)
Cod sursa(job #854356)
#include<cstdio>
#include<vector>
#define M 666013
using namespace std;
vector<int> v[M];
int a[101], n ;
inline void adaug(int x)
{
int element = x % M;
v[element].push_back(x);
}
inline int cauta(int x)
{
int element = x % M;
for(vector<int>::iterator it = v[element].begin() ; it != v[element].end() ; ++it)
if(*it == x )
return 1;
return 0;
}
inline void afisare(int s)
{
for(unsigned i = 0 ; i < n ; i++)
for(unsigned j = 0 ; j < n ; j++)
for(unsigned k = 0 ; k < n ; k++)
if(a[i]+a[j]+a[k] == s)
{
printf("%d %d %d ",a[i],a[j],a[j]);
}
}
int main()
{
int S;
freopen("loto.in","r",stdin);
freopen("loto.out","w",stdout);
scanf("%d %d",&n,&S);
for(unsigned i = 0; i < n ; i++)
scanf("%d",&a[i]);
for(unsigned i = 0; i < n ; i++)
for(unsigned j = 0 ; j < n ; j++)
for(unsigned k = 0 ; k < n ; k++)
adaug(a[i]+a[j]+a[k]);
for(unsigned i = 0 ; i < n ; i++)
for(unsigned j = 0 ; j < n ; j++)
for(unsigned k = 0; k < n ; k++)
if( S-a[i]-a[j]-a[k] >= 0 && cauta(S-a[i]-a[j]-a[k]) )
{
afisare(S-a[i]-a[j]-a[k]);
printf("%d %d %d",a[i],a[j],a[k]);
return 0;
}
printf("-1");
return 0;
}