Pagini recente » Cod sursa (job #1436366) | Cod sursa (job #856903) | Cod sursa (job #601382) | Statistici Man Mihai (Mishutheman) | Cod sursa (job #854352)
Cod sursa(job #854352)
#include<cstdio>
#include<vector>
#define M 666013
using namespace std;
vector<int> v[M];
unsigned a[101], n ;
void adaug(int x)
{
int element = x % M;
v[element].push_back(x);
}
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;
}
void afisare(int s)
{
for(unsigned i = 1 ; i <= n ; i++)
for(unsigned j = 1 ; j <= n ; j++)
for(unsigned k = 1 ; 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 = 1; i <= n ; i++)
scanf("%d",&a[i]);
for(unsigned i = 1; i <= n ; i++)
for(unsigned j = 1 ; j <= n ; j++)
for(unsigned k = 1 ; k <= n ; k++)
adaug(a[i]+a[j]+a[k]);
for(unsigned i = 1 ; i <= n ; i++)
for(unsigned j = 1 ; j <= n ; j++)
for(unsigned k = 1; 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;
}