Pagini recente » Cod sursa (job #972462) | Cod sursa (job #1863866) | Cod sursa (job #908179) | Cod sursa (job #2934283) | Cod sursa (job #978601)
Cod sursa(job #978601)
#include <fstream>
#include <algorithm>
using namespace std;
ifstream f("loto.in");
ofstream g("loto.out");
struct Element{
int value;
int first;
int sec;
int last;
};
Element Sums[1000005];
int N,S,Array[105],Top=1,Sol[10],sum,ind;
inline bool cmp(Element a,Element b)
{
return a.value<b.value;
}
void Read()
{
int i;
f>>N>>S;
for(i=1;i<=N;i++)
f>>Array[i];
int j,k;
for(i=1;i<=N;i++)
for(j=1;j<=N;j++)
for(k=1;k<=N;k++)
Sums[++ind].value=Array[i]+Array[j]+Array[k],Sums[ind].first=i,Sums[ind].sec=j,Sums[ind].last=k;
sort(Sums+1,Sums+ind+1,cmp);
}
int main()
{
Read();
int mid,i;
for(i=1;i<=ind;i++)
{
int val=Sums[i].value,st=1,dr=ind;
while(st<=dr)
{
mid=(st+dr)/2;
if(val+Sums[mid].value==S)
{
g<<Array[Sums[i].first]<<" "<<Array[Sums[i].sec]<<" "<<Array[Sums[i].last]<<" "<<Array[Sums[mid].first]<<" "<<Array[Sums[mid].sec]<<" "<<Array[Sums[mid].last]<<"\n";
return 0;
}
if(val+Sums[mid].value<S)
st=mid+1;
if(val+Sums[mid].value>S)
dr=mid-1;
}
}
g<<-1<<"\n";
return 0;
}