Pagini recente » Cod sursa (job #764754) | Cod sursa (job #698652) | Cod sursa (job #1720229) | Cod sursa (job #1946802) | Cod sursa (job #1809321)
#include <iostream>
#include <fstream>
using namespace std;
ifstream f("loto.in");
ofstream g("loto.out");
int lst[666019], urm[1000010] , nr, k = 666019, v[101],sol1 , sol2, sol3 ;
struct h{
int a , b , c, v;
} val[1000010];
bool exista(int x)
{
int r = x % k, p;
p = lst[r];
while(p != 0)
{
if(val[p].v == x)
{
sol1 = val[p].a;
sol2 = val[p].b;
sol3 = val[p].c;
return true;
}
p = urm[p];
}
return false;
}
void adauga(int x, int t , int y, int z)
{
if(exista(x) != 1)
{
int r = x % k;
nr++;
val[nr].v = x;
val[nr].a = t;
val[nr].b = y;
val[nr].c = z;
urm[nr] = lst[r];
lst[r] = nr;
}
}
int main()
{
int n, s, i , j ,ij;
f >> n >> s;
for( i = 1; i <= n ; i++)
f >> v[i];
for(i = 1 ; i <= n ; i++)
for(j = 1 ; j <= n ; j++)
for(ij = 1 ; ij <= n ; ij++)
adauga(v[i]+v[j]+v[ij], v[i], v[j], v[ij]);
for(i = 1 ; i <= n ; i++)
for(j = 1 ; j <= n ; j++)
for(ij = 1 ; ij <= n ; ij++)
{
if(exista(s - v[i]- v[j] - v[ij]))
{
g << v[i] << " " << v[j] << " " << v[ij] << " " << sol1 << " " << sol2 << " " << sol3 ;
return 0;
}
}
g << -1;
}