Pagini recente » Cod sursa (job #2978262) | Cod sursa (job #1059931) | Cod sursa (job #1462252) | Cod sursa (job #1057342) | Cod sursa (job #1184302)
#include <fstream>
#include <vector>
using namespace std;
ifstream fin("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];
sum ur[1000009];
inline bool cauta(int su)
{
int zum=su%mod;
for(it=x[zum].begin();it!=x[zum].end();it++)
{
if(it->tot==su)
{
fout<<it->x<<" "<<it->y<<" "<<it->z<<" ";
return true;
}
}
return false;
}
int main()
{
int i,j,n,s,nr=0,r;
bool ok=false;
fin>>n>>s;
sum pas;
for(i=1;i<=n;i++) fin>>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++)
{
ok=cauta(s-ur[i].tot);
if(ok==true)
{
fout<<ur[i].x<<" "<<ur[i].y<<" "<<ur[i].z<<"\n";
break;
}
}
if(ok==false) fout<<-1;
}