Pagini recente » Cod sursa (job #2075982) | Istoria paginii runda/alteproblemegogule/clasament | Cod sursa (job #998255) | Cod sursa (job #2256729) | Cod sursa (job #268842)
Cod sursa(job #268842)
#include<stdio.h>
#include<algorithm>
#include<stdlib.h>
using namespace std;
#define IN "loto.in","r",stdin
#define OUT "loto.out","w",stdout
#define Nmax 120
struct pereche{
int sum,x,y,z;
};
int n,s,sum,nr=1;
int v[Nmax];
pereche sol[1000000];
void citire()
{
freopen(IN);
scanf("%d%d",&n,&s);
for(int i=1;i<=n;++i)
scanf("%d",&v[i]);
}
void form()
{
for(int i=1;i<=n;++i)
for(int j=i;j<=n;++j)
for(int p=j;p<=n;++p)
{
sol[nr].x=v[i];
sol[nr].y=v[j];
sol[nr].z=v[p];
sol[nr++].sum=v[i]+v[j]+v[p];
}
}
void afisare(int st,int dr)
{
freopen(OUT);
printf("%d %d %d %d %d %d\n",sol[st].x,sol[st].y,sol[st].z,sol[dr].x,sol[dr].y,sol[dr].z);
}
int cmp(struct pereche a,struct pereche b)
{
return a.sum<b.sum;
}
void solve()
{
int st=1,dr=nr;
for(;st<dr;++st)
{
if(sol[dr].sum+sol[st].sum==s)
{
afisare(st,dr);
return ;
}
while(sol[dr].sum+sol[st].sum>s)
{
sol[dr].sum=0;
--dr;
}
}
printf("-1\n");
}
int main()
{
freopen(OUT);
citire();
form();
sort(sol+1,sol+nr+1,cmp);
solve();
return 0;
}