Pagini recente » Cod sursa (job #2286425) | Cod sursa (job #1360626) | Cod sursa (job #3202827) | Cod sursa (job #2699133) | Cod sursa (job #1042102)
#include<fstream>
#include<iostream>
#include<vector>
#define numaru 666019
using namespace std;
ifstream f("loto.in");
ofstream g("loto.out");
vector<long long> w[numaru];
long long v[100];
vector<long long>::iterator cauta(long long x)
{
int unde=x%numaru;
vector<long long>::iterator i;
for(i=w[unde].begin(); i!=w[unde].end();i+=4)
if(*i==x)return i;
return w[unde].end();
}
void adauga(long long a,long long b,long long c)
{
long long x=a+b+c;
int unde=x%numaru;
if(cauta(x)==w[unde].end())
{
w[unde].push_back(x);
w[unde].push_back(a);
w[unde].push_back(b);
w[unde].push_back(c);
}
}
int main()
{
vector<long long>::iterator i;
int n,p,q,k;
long long x,s[6],temp;
f>>n>>x;
for(k=0;k<n;++k)
{
f>>v[k];
}
for(p=0;p<n;++p)for(q=p;q<n;++q)for(k=q;k<n;++k)if(x>v[p]+v[q]+v[k])adauga(v[p],v[q],v[k]);
s[0]=-1;
for(p=0;p<n;++p)for(q=p;q<n;++q)for(k=q;k<n;++k)
{
if(x>=v[p]+v[q]+v[k])
{
temp=x-v[p]-v[q]-v[k];
i=cauta(temp);
if(i!=w[temp%numaru].end()) { s[0]=v[p];s[1]=v[q]; s[2]=v[k];s[3]=*(i+1);s[4]=*(i+2);s[5]=*(i+3); p=q=k=n; }
}
}
if(s[0]!=-1) for(k=0;k<6;++k)g<<s[k]<<" ";
else g<<"-1";
g<<"\n";
f.close();
g.close();
return 0;
}