Pagini recente » Cod sursa (job #518770) | Cod sursa (job #2829102) | Cod sursa (job #667248) | Cod sursa (job #2848700) | Cod sursa (job #1078079)
#include <iostream>
#include <fstream>
#include <algorithm>
using namespace std;
ifstream f ("loto.in");
ofstream g ("loto.out");
struct suma
{
int sum;
int x,y,z;
} a[1000001];
int v[101];
int cmp(const suma &x, const suma &y)
{
return (x.sum<y.sum);
}
int main()
{
int n, i, j,k, mid, st, dr,S, summ,summ1, nr, ok;
f>>n>>S;
for (i=1;i<=n;i++)
f>>v[i];
nr=0;
for (i=1;i<=n;i++)
for (j=i;j<=n;j++)
for (k=j;k<=n;k++)
{
++nr;
summ= v[i]+v[j]+v[k];
a[nr].sum=summ;
a[nr].x=v[i];
a[nr].y=v[j];
a[nr].z=v[k];
}
sort(a+1,a+nr+1,cmp);
ok=1;
summ1=0;
for (i=1;i<=n && ok==1;i++)
for (j=i;j<=n && ok==1;j++)
for(k=j;k<=n && ok==1; k++)
{
summ1=S-v[i]-v[j]-v[k];
st=1;
dr=nr;
while (st<=dr && ok==1)
{
mid=(st+dr)/2;
if(a[mid].sum>summ1)
dr=mid-1;
else
if(a[mid].sum<summ1)
st=mid+1;
else
ok=0;
}
if(ok==0)
g<<v[i]<<' '<<v[j]<<' '<<v[k]<<' '<<a[mid].x<<' '<<a[mid].y<<' '<<a[mid].z;
}
if(ok)
g<<-1;
f.close();g.close();
return 0;
}