Pagini recente » Cod sursa (job #1897346) | Cod sursa (job #2113532) | Cod sursa (job #1369500) | Cod sursa (job #1430685) | Cod sursa (job #1647447)
#include <iostream>
#include <fstream>
#include <math.h>
#include <algorithm>
using namespace std;
ifstream f("loto.in");
ofstream g("loto.out");
int v[201],n,s;
struct loto
{
long long suma;
int x,y,z;
};
loto sum[1000001];
void citire()
{
f>>n>>s; int i;
for(i=1;i<=n;i++)
f>>v[i];
f.close();
}
inline bool cmp(loto a,loto b)
{
return a.suma<b.suma;
}
void afisare(int a,int b,int c,int d,int e,int f)
{
v[1]=a; v[2]=b; v[3]=c; v[4]=d; v[5]=e; v[6]=f;
sort(v+1,v+7);
int j;
for(j=1;j<=6;j++)
g<<v[j]<<" ";
}
int rez()
{
int i1,i2,i3,i=0;
for(i1=1;i1<=n;i1++)
for(i2=i1;i2<=n;i2++)
for(i3=i2;i3<=n;i3++)
{
sum[++i].suma=v[i1]+v[i2]+v[i3];
sum[i].x=v[i1];
sum[i].y=v[i2];
sum[i].z=v[i3];
}
sort(sum+1,sum+1+i,cmp);
long long a,b,numar,mij;
for(i1=1;i1<=i;i1++)
{
a=1;
b=i;
numar=s-sum[i1].suma;
while(a<b)
{
mij=(a+b)/2;
if(sum[mij].suma==numar)
{afisare(sum[i1].x,sum[i1].y,sum[i1].z,sum[mij].x,sum[mij].y,sum[mij].z); return 0;}
if(sum[mij].suma<numar) a=mij+1;
if(sum[mij].suma>numar) b=mij-1;
}
}
g<<-1;
}
int main()
{
citire();rez();
return 0;
}