Pagini recente » Cod sursa (job #2027633) | Cod sursa (job #1294346) | Cod sursa (job #1854156) | Cod sursa (job #362330) | Cod sursa (job #1315475)
#include <cstdio>
#include <vector>
#define mod 666013
#define nmax 101
#define pb push_back
using namespace std;
struct loto
{
int s, x, y, z;
}X;
vector<loto> kush[mod];
int v[nmax], i, j, n, k, s, s1;
inline vector<loto>::iterator find_v(int x)
{
int list=x%mod;
vector<loto>::iterator it;
loto X;
for(it=kush[list].begin(); it!=kush[list].end(); ++it)
{
X=*it;
if(X.s==x) return it;
}
return kush[list].end();
}
void insert_value(int x, int a, int b, int c)
{
int list=x%mod;
vector<loto>::iterator it;
loto X;
for(it=kush[list].begin(); it!=kush[list].end(); ++it)
{
X=*it;
if(X.s==x) return ;
}
X.s=x; X.x=a; X.y=b; X.z=c;
kush[list].pb(X);
}
int main()
{
freopen("loto.in", "rt", stdin);
freopen("loto.out", "wt", stdout);
scanf("%d%d", &n, &s);
for(i=1; i<=n; ++i)
scanf("%d", &v[i]);
vector<loto>::iterator it;
for(i=1; i<=n; ++i)
for(j=i; j<=n; ++j)
for(k=j; k<=n; ++k)
{
s1=v[i]+v[j]+v[k];
it=find_v(s-s1);
if(it!=kush[(s-s1)%mod].end())
{
X=*it;
printf("%d %d %d ", v[i], v[j], v[k]);
printf("%d %d %d ", X.x, X.y, X.z);
return 0;
}
insert_value(s1, v[i], v[j], v[k]);
}
printf("-1");
return 0;
}