Pagini recente » Cod sursa (job #176420) | Cod sursa (job #1332595) | Cod sursa (job #44419) | Cod sursa (job #3277795) | Cod sursa (job #304700)
Cod sursa(job #304700)
#include<iostream>
#include<fstream>
using namespace std;
#define ATR 100000000
struct sir
{
long x,y,z,sum;
};
int nulomuto(sir a[ATR],int s, int d)
{
long i,j; sir t66;
long piv=a[s].sum;
i=s-1;
j=d+1;
while(i<j)
{
do
j--;
while(a[j].sum>piv);
do
i++;
while(a[i].sum<piv);
if(i<j)
{
t66=a[i];
a[i]=a[j];
a[j]=t66;
}
else
return j;
}
}
void quix(sir a[ATR],int s, int d)
{
int m;
if (s<d)
{
m=nulomuto(a,s,d);
quix(a,s,m);
quix(a,m+1,d);
}
}
ifstream f ("loto.in");
ofstream o ("loto.out");
sir b[ATR];
int main()
{long n,i,j,k,S,w[101],p=1,kk=0,l;
f>>n>>S;
for(i=1;i<=n;i++)
f>>w[i];
for(i=1;i<=n;i++)
for(j=i;j<=n;j++)
for(k=j;k<=n;k++)
{
b[++kk].sum=w[i]+w[j]+w[k];
b[kk].x=w[i];
b[kk].y=w[j];
b[kk].z=w[k];
}
quix(b,1,kk);
i=1;
j=kk;
while(i<=j && p==1)
{
l=S-b[i].sum;
while(b[j].sum>l)
j--;
if(b[j].sum == l)
{
o<<b[i].x<<" "<<b[i].y<<" "<<b[i].z<<" "<<b[j].x<<" "<<b[j].y<<" "<<b[j].z;
p=0;
}
i++;
}
if(p)
o<<"-1";
return 0;}