Pagini recente » Clasamentul arhivei de probleme | Cod sursa (job #2341076) | Clasamentul arhivei de probleme | Clasamentul arhivei de probleme | Cod sursa (job #926626)
Cod sursa(job #926626)
#include <iostream>
#include <fstream>
#include <algorithm>
using namespace std;
ifstream f("loto.in");
ofstream g("loto.out");
int s, a[101], l, sol[7];
long suma[100000001], suma_temporara;
short i, j, k, n;
bool sw;
int contine (int x)
{
int ls, ld, mij;
ls=1;
ld=l;
while(ls<=ld)
{
mij=(ls+ld)/2;
if(x==suma[mij]) return 1;
else if(x>suma[mij]) ls=mij+1;
else ld=mij-1;
}
return 0;
}
int main()
{
f>>n>>s;
for(i=1; i<=n; i++)
f>>a[i];
for(i=1; i<=n; i++)
for(j=i; j<=n; j++)
for(k=j; k<=n; k++)
if(a[i]+a[j]+a[k]<=s)
suma[++l]=a[i]+a[j]+a[k];
sort(suma+1, suma+1+l);
for(i=1; i<=n&&!sw; i++)
for(j=i; j<=n&&!sw; j++)
for(k=j; k<=n&&!sw; k++)
{
suma_temporara=a[i]+a[j]+a[k];
if(contine(s-suma_temporara))
{
sol[1]=a[i];
sol[2]=a[j];
sol[3]=a[k];
sw=1;
}
}
if(sw==0) g<<-1;
else
{
s-=suma_temporara;
sw=0;
for(i=1; i<=n&&!sw; i++)
for(j=i; j<=n&&!sw; j++)
for(k=j; k<=n&&!sw; k++)
if(a[i]+a[j]+a[k]==s)
{
sol[4]=a[i];
sol[5]=a[j];
sol[6]=a[k];
sw=1;
}
for(i=1; i<=6; i++)
g<<sol[i]<<' ';
}
f.close();
g.close();
return 0;
}