Pagini recente » Cod sursa (job #2218775) | Cod sursa (job #852862) | Cod sursa (job #3208599) | Cod sursa (job #746078) | Cod sursa (job #1184395)
#include <fstream>
#include <vector>
#include <algorithm>
using namespace std;
ifstream fn("loto.in");
ofstream fout("loto.out");
const int mod=7013;
struct sum
{
int tot,x,y,z;
};
vector <sum> x[mod];
vector <sum>::iterator it;
int v[101],fin[6];
sum ur[1000019];
int nr;
inline void adauga(int u,int y,int z)
{
sum pas;
pas.tot=u+y+z;
pas.x=u;
pas.y=y;
pas.z=z;
x[pas.tot%mod].push_back(pas);
ur[nr++]=pas;
}
inline bool cauta(int su)
{
int zum=su%mod;
for(it=x[zum].begin();it!=x[zum].end();it++)
{
if(it->tot==su)
{
fin[0]=it->x;fin[1]=it->y;fin[2]=it->z;
return true;
}
}
return false;
}
int main()
{
int i,j,n,s,r;
bool ok=false;
fn>>n>>s;
for(i=1;i<=n;i++) fn>>v[i];
for(i=1;i<=n;i++)
{ adauga(v[i],v[i],v[i]);
for(j=i+1;j<=n;j++)
{ adauga(v[i],v[i],v[j]);
adauga(v[j],v[j],v[i]);
for(r=j+1;r<=n;r++)
{
adauga(v[i],v[j],v[r]);
adauga(v[r],v[r],v[i]);
adauga(v[r],v[r],v[j]);
}
}
}
for(i=n-2;i<=n;i++)
{
adauga(v[i],v[i],v[i]);
}
for(i=0;i<n*n*n;i++)
{
if(s-ur[i].tot>0)
{
ok=cauta(s-ur[i].tot);
if(ok==true)
{
fin[3]=ur[i].x;fin[4]=ur[i].y;fin[5]=ur[i].z;
sort(fin,fin+6);
for(i=0;i<6;i++) fout<<fin[i]<<" ";
break;
}
}
}
if(ok==false) fout<<-1;
}