Pagini recente » Cod sursa (job #310150) | Cod sursa (job #1244529) | Cod sursa (job #1773343) | Cod sursa (job #2243071) | Cod sursa (job #821884)
Cod sursa(job #821884)
#include <fstream>
using namespace std;
#define mod 2222223
struct nod
{
int inf1, inf2, inf3;
nod *adr;
}*l[mod];
void add(int a, int b, int c)
{
const int s = a+b+c, m = s%mod;
if (!l[m])
{
l[m] = new nod;
l[m]->inf1 = a;
l[m]->inf2 = b;
l[m]->inf3 = c;
l[m]->adr = NULL;
return;
}
nod *p = l[m];
while (p->adr && (p->inf1 + p->inf2 + p->inf3 != s)) p = p->adr;
if (p->adr) return;
p->adr = new nod;
p->adr->inf1 = a; p->adr->inf2 = b; p->adr->inf3 = c;
p->adr->adr = NULL;
}
int main()
{
ifstream in("loto.in"); ofstream out("loto.out");
int n, s, i, j, k, *v;
in>>n>>s;
v = new int[n];
for (i=0;i<n;i++) in>>v[i];
for (i=0;i<n;i++)
for (j=0;j<n;j++)
for (k=0;k<n;k++)
add(v[i], v[j], v[k]);
for (i=0;i<mod;i++)
{
nod *p = l[i];
while (p)
{
int sum1 = p->inf1 + p->inf2 + p->inf3;
nod *q = l[(s-sum1)%mod];
while (q)
{
int sum2 = q->inf1 + q->inf2 + q->inf3;
if (sum1 + sum2 == s)
{
out<<p->inf1<<" "<<p->inf2<<" "<<p->inf3<<" "<<q->inf1<<" "<<q->inf2<<" "<<q->inf3;
return 0;
}
q = q->adr;
}
p = p->adr;
}
}
out<<-1;
return 0;
}