Pagini recente » Istoria paginii runda/noaptea_burlacilor2/clasament | Cod sursa (job #1851815) | Cod sursa (job #1572672) | Cod sursa (job #1566105) | Cod sursa (job #2785395)
#include <iostream>
#include <fstream>
#include <algorithm>
using namespace std;
ifstream in("loto.in");
ofstream out("loto.out");
int n,mid,st,dr,S,v[101],vs[1000001],St,e=0,ok=0,r;
int main()
{
in>>n>>S;
for(int i=1;i<=n;i++)
in>>v[i];
for(int i=1;i<=n;i++)
{
for(int j=1;j<=n;j++)
{
for(int t=1;t<=n;t++)
vs[e++]=v[i]+v[j]+v[t];
}
}
sort(vs,vs+e);
for(int i=1;i<=n;i++)
{
for(int j=1;j<=n;j++)
{
for(int k=1;k<=n;k++)
{
St=S-v[i]-v[j]-v[k];
st=0;
dr=e-1;
while(st<=dr)
{
mid=(st+dr)/2;
if(St>vs[mid])
st=mid+1;
else if(St<vs[mid])
dr=mid-1;
else
{
ok=1;
r=St;
break;
}
}
}
}
}
if(ok==0)
out<<-1;
else
{
for(int i=1;i<=n;i++)
{
for(int j=1;j<=n;j++)
{
for(int k=1;k<=n;k++)
if(r==v[i]+v[j]+v[k])
{
out<<v[i]<<" "<<v[j]<<" "<<v[k]<<" ";
i=n+1;
j=n+1;
break;
}
}
}
for(int i=1;i<=n;i++)
{
for(int j=1;j<=n;j++)
{
for(int k=1;k<=n;k++)
if(S-r==v[i]+v[j]+v[k])
{
out<<v[i]<<" "<<v[j]<<" "<<v[k]<<" ";
i=n+1;
j=n+1;
break;
}
}
}
}
return 0;
}