Pagini recente » Cod sursa (job #2764678) | Cod sursa (job #646507) | Cod sursa (job #1880516) | Cod sursa (job #1963982) | Cod sursa (job #1184306)
#include <fstream>
#include <vector>
#include <algorithm>
using namespace std;
ifstream fn("loto.in");
ofstream fout("loto.out");
const int mod=666013;
struct sum
{
int tot,x,y,z;
};
vector <sum> x[mod];
vector <sum>::iterator it;
int v[101],fin[6];
sum ur[1000019];
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;
//fout<<it->x<<" "<<it->y<<" "<<it->z<<" ";
return true;
}
}
return false;
}
int main()
{
int i,j,n,s,nr=0,r;
bool ok=false;
fn>>n>>s;
sum pas;
for(i=1;i<=n;i++) fn>>v[i];
for(i=1;i<=n-2;i++)
{ pas.tot=3*v[i];
pas.x=pas.y=pas.z=v[i];
x[pas.tot%mod].push_back(pas);
ur[nr++]=pas;
for(j=i+1;j<=n-1;j++)
{ pas.tot=2*v[i]+v[j];
pas.x=pas.y=v[i];pas.z=v[j];
x[pas.tot%mod].push_back(pas);
ur[nr++]=pas;
pas.tot=2*v[j]+v[i];
pas.x=pas.y=v[j];pas.z=v[i];
x[pas.tot%mod].push_back(pas);
ur[nr++]=pas;
for(r=j+1;r<=n;r++)
{
pas.tot=v[i]+v[j]+v[r];
pas.x=v[i];
pas.y=v[j];
pas.z=v[r];
x[pas.tot%mod].push_back(pas);
ur[nr++]=pas;
pas.tot=2*v[r]+v[j];
pas.x=pas.y=v[r];pas.z=v[j];
x[pas.tot%mod].push_back(pas);
ur[nr++]=pas;
pas.tot=2*v[r]+v[i];
pas.x=pas.y=v[r];pas.z=v[i];
x[pas.tot%mod].push_back(pas);
ur[nr++]=pas;
}
}
}
for(i=n-1;i<=n;i++)
{
pas.tot=3*v[i];
pas.x=pas.y=pas.z=v[i];
x[pas.tot%mod].push_back(pas);
ur[nr++]=pas;
}
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]<<" ";
//fout<<ur[i].x<<" "<<ur[i].y<<" "<<ur[i].z<<"\n";
break;
}
}
}
if(ok==false) fout<<-1;
}