Pagini recente » Cod sursa (job #2139949) | Cod sursa (job #1630831) | Cod sursa (job #1721174) | Cod sursa (job #1954447) | Cod sursa (job #348077)
Cod sursa(job #348077)
#include <iostream>
#include <fstream>
#include <vector>
using namespace std;
#define PRIM 100001
vector<int > H[PRIM];
int v[101];
int nr_v;
int sum;
int stop=0;
bool check(int sum)
{
vector<int >::iterator it;
for (it=H[sum%PRIM].begin(); it<H[sum%PRIM].end(); it++)
if (*it==sum)
return 1;
return 0;
}
void afisare(int sum,int q, int w, int e)
{
for (int i=1; i<=nr_v; ++i)
for (int j=i; j<=nr_v; ++j)
for (int k=j; j<=nr_v; ++k)
if ( (v[i]+v[j]+v[k])==sum )
{
fstream g("loto.out", ios::out);
g<<v[q]<<" "<<v[w]<<" "<<v[e]<<" "<<v[i]<<" "<<v[j]<<" "<<v[k]<<"\n";
g.close();
stop=1;
}
}
void solve()
{
fstream f("loto.in", ios::in);
f>>nr_v;
f>>sum;
for (short i=1; i<=nr_v; ++i)
f>>v[i];
for (short i=1; i<=nr_v; ++i)
for (short j=i; j<=nr_v; ++j)
for (short k=j; k<=nr_v; ++k)
{
int suma=v[i]+v[j]+v[k];
if ( check(suma)==0 )
H[suma%PRIM].push_back(suma);
}
for (short i=1; i<=nr_v; ++i)
for (short j=i; j<=nr_v; ++j)
for (short k=j; k<=nr_v; ++k)
{
int suma_aux=sum-v[i]-v[j]-v[k];
if (suma_aux>=0)
if (check(suma_aux))
afisare(suma_aux, i, j, k);
}
if (stop==0)
{
fstream g("loto.out", ios::out);
g<<"-1";
g.close();
}
}
int main()
{
solve();
return 0;
}