Pagini recente » Cod sursa (job #2033580) | Cod sursa (job #84749) | Cod sursa (job #1669568) | Cod sursa (job #2292854) | Cod sursa (job #348041)
Cod sursa(job #348041)
//infoarena
//pb: Loto
#include <iostream>
#include <fstream>
#include <vector>
#include <algorithm>
#include <ctime> //void generator; && //int main();
#define PRIM 100001
using namespace std;
int v[101];
int nr_v;
int sum;
struct node
{
int i,j,k;
int sum;
node(int i, int j, int k, int sum)
{
this->i=i;
this->j=j;
this->k=k;
this->sum=sum;
}
};
vector< vector<node > > H;
void solve()
{
fstream f("loto.in", ios::in);
fstream g("loto.out", ios::out);
f>>nr_v;
f>>sum;
H.resize(666203);
for (int i=1; i<=nr_v; ++i)
f>>v[i];
for (int i=1; i<=nr_v-2; ++i)
for (int j=i+1; j<=nr_v-1; ++j)
for (int k=j+1; k<=nr_v; ++k)
{
node nou(i, j, k, v[i]+v[j]+v[k]);
H[(v[i]+v[j]+v[k])%PRIM].push_back(nou);
}
int sol[7];
for (int i=1; i<=nr_v-2; ++i)
for (int j=i+1; j<=nr_v-1; ++j)
for (int k=j+1; k<=nr_v; ++k)
{
vector<node>::iterator it;
int poz=sum-v[i]-v[j]-v[k];
for (it=H[poz].begin(); it<H[poz%PRIM].end(); it++)
if (it->sum==poz)
{
sol[1]=v[it->i];
sol[2]=v[it->j];
sol[3]=v[it->k];
sol[4]=v[i];
sol[5]=v[j];
sol[6]=v[k];
goto GOOD;
}
}
g<<"-1";
goto END;
GOOD:
sort(sol+1, sol+7);
for (int i=1; i<=6; ++i)
g<<sol[i]<<" ";
END:
f.close();
g.close();
}
/*
void generator()
{
fstream f("test.in", ios::out);
f<<"100 542332\n";
for (int i=1; i<=100; ++i)
f<<rand()%101<<" ";
f.close();
}
*/
int main()
{
//generator();
//double s=clock();
solve();
//cout<<(clock()-s)/(double)CLOCKS_PER_SEC;
return 0;
}