Pagini recente » Cod sursa (job #389933) | Cod sursa (job #328614) | Cod sursa (job #1706044) | Istoria paginii runda/ada15/clasament | Cod sursa (job #654320)
Cod sursa(job #654320)
#include<fstream>
#include<vector>
#define NMAX 101
#define MOD 666013
using namespace std;
ifstream f("loto.in");
ofstream g("loto.out");
int a[NMAX], n, m, S, SOL[7];
struct st
{
int s;
short a, b, c;
} x[1000001];
vector<int> h[MOD];
void Citeste()
{
int i;
f>>n>>S;
for (i=1; i<=n; ++i) f>>a[i];
}
void Formeaza_sume()
{
int i, j, k;
for (i=1; i<=n; ++i)
for (j=1; j<=n; ++j)
for (k=1; k<=n; ++k)
{
x[++m].s=a[i]+a[j]+a[k];
x[m].a=a[i]; x[m].b=a[j]; x[m].c=a[k];
h[x[m].s%MOD].push_back(m);
}
}
void Rezolva()
{
int i, s, ok=0, y;
vector<int>:: iterator it;
for (i=1; i<=m; ++i)
{
s=S-x[i].s;
y=s%MOD;
for (it=h[y].begin(); it!=h[y].end(); ++it)
if (x[*it].s==s)
{
ok=(*it);
break;
}
if (ok)
{
g<<x[i].a<<" "<<x[i].b<<" "<<x[i].c<<" "<<x[ok].a<<" "<<x[ok].b<<" "<<x[ok].c<<"\n";
break;
}
}
if (!ok) g<<"-1\n";
}
int main()
{
Citeste();
Formeaza_sume();
Rezolva();
f.close();
g.close();
return 0;
}