Pagini recente » Cod sursa (job #2537494) | Cod sursa (job #2415556) | Cod sursa (job #2254430) | Cod sursa (job #1141822) | Cod sursa (job #2698089)
#include <fstream>
#include <algorithm>
#include <vector>
using namespace std;
#define Maxhash 666013
vector<int>Hash[Maxhash];
int v[105],v1[10];
void adauga(int x)
{
int rest=x%Maxhash;
unsigned int i=0;
while(i<Hash[rest].size()&&x!=Hash[rest][i])
{
i++;
}
if(i==Hash[rest].size())
{
Hash[rest].push_back(x);
}
}
void sterge(int x)
{
int rest=x%Maxhash;
unsigned int i=0;
while(i<Hash[rest].size()&&x!=Hash[rest][i])
{
i++;
}
if(i<Hash[rest].size())
{
Hash[rest].erase(Hash[rest].begin()+i);
}
}
bool cauta(int x)
{
int rest=x%Maxhash;
unsigned int i=0;
while(i<Hash[rest].size()&&x!=Hash[rest][i])
{
i++;
}
if(i<Hash[rest].size())
{
return 1;
}
return 0;
}
int main()
{
ifstream fin("loto.in");
ofstream fout("loto.out");
int n,s;
fin>>n>>s;
for(int i=1; i<=n; i++)
{
fin>>v[i];
}
int sum,sum1;
for(int i=1; i<=n; i++)
{
for(int j=1; j<=n; j++)
{
for(int k=1; k<=n; k++)
{
sum=v[i]+v[j]+v[k];
adauga(sum);
}
}
}
int found=-1;
for(int i=1; i<=n; i++)
{
for(int j=1; j<=n; j++)
{
for(int k=1; k<=n; k++)
{
sum=v[i]+v[j]+v[k];
if(sum<=s)
{
sum1=s-sum;
if(cauta(sum1)==1)
{
v1[1]=v[i];
v1[2]=v[j];
v1[3]=v[k];
found=sum;
break;
}
}
}
if(found!=-1)
{
break;
}
}
if(found!=-1)
{
break;
}
}
if(found==-1)
{
fout<<"-1"<<'\n';
}
else
{
sum1=s-found;
found=-1;
for(int i=1; i<=n; i++)
{
for(int j=1; j<=n; j++)
{
for(int k=1; k<=n; k++)
{
sum=v[i]+v[j]+v[k];
if(sum==sum1)
{
found=sum1;
v1[4]=v[i];
v1[5]=v[j];
v1[6]=v[k];
break;
}
}
if(found!=-1)
{
break;
}
}
if(found!=-1)
{
break;
}
}
sort(v1+1,v1+7);
for(int i=1;i<=6;i++)
{
fout<<v1[i]<<" ";
}
fout<<'\n';
}
return 0;
}