Pagini recente » Cod sursa (job #1293112) | Cod sursa (job #2679552) | Cod sursa (job #2285256) | Cod sursa (job #1824669) | Cod sursa (job #1851467)
#include <iostream>
#include <cstdio>
#include <string>
#include <fstream>
#include <algorithm>
using namespace std;
int v[100000000],lungime=0,st=1,dr=300000000,mij=0,n,a=0,b=0,c=0,suma[90000000];
void indici (int t)
{
int i,j,k;
for (i=1; i<=n; ++i)
{
for (j=i; j<=n; ++j)
{
for (k=j; k<=n; ++k)
{
if (v[i]+v[j]+v[k]==t)
{
a=i;
b=j;
c=k;
return;
}
}
}
}
}
bool cautbin (int t)
{
st=1;
dr=lungime;
while(st<dr)
{
mij=(st+dr)/2;
if (suma[mij]==t)
{
return true;
}
else
{
if (suma[mij]<t)
{
st=mij+1;
}
else
{
if (suma[mij]>t)
{
dr=mij-1;
}
}
}
}
return false;
}
int main()
{
ifstream intrare("loto.in");
ofstream iesire ("loto.out");
long long i,j,k,s,numsum=1,t=0;
intrare>>n>>s;
for (i=1; i<=n; ++i)
{
intrare>>v[i];
}
sort(v,v+n+1);
for (i=1; i<=n; ++i)
{
for (j=i; j<=n; ++j)
{
for (k=j; k<=n; ++k)
{
suma[numsum]=v[i]+v[j]+v[k];
numsum++;
lungime++;
}
}
}
dr=lungime;
sort(suma,suma+lungime);
for (i=1; i<=n; ++i)
{
for (j=i; j<=n; ++j)
{
for (k=j; k<=n; ++k)
{
t=s-(v[i]+v[j]+v[k]);
//cout<<t<<" "<<cautbin(t)<<"\n";
if (cautbin(t)==true)
{
indici(t);
iesire<<v[i]<<" "<<v[j]<<" "<<v[k]<<" "<<v[a]<<" "<<v[b]<<" "<<v[c];
return 0;
}
}
}
}
iesire<<"-1";
}