Pagini recente » Borderou de evaluare (job #1761214) | Borderou de evaluare (job #2198572) | Borderou de evaluare (job #2014572) | Borderou de evaluare (job #2376655) | Cod sursa (job #505457)
Cod sursa(job #505457)
#include<stdio.h>
#include<algorithm>
using namespace std;
struct numere
{int x,y,z,s;};
int n,v[101];
long long s,p;
numere nr[10000000];
bool myfunction( numere a, numere b)
{
if( a.s < b.s) return true;
return false;
}
bool ok;
int main()
{
freopen("loto.in","r",stdin);
freopen("loto.out","w",stdout);
scanf("%d%lld",&n,&s);
for(int i=1;i<=n;i++)
scanf("%d",&v[i]);
for(int i=1;i<=n;i++)
{
for(int j=1;j<=n;j++)
{
for(int k=1;k<=n;k++)
{
p++;
nr[p].x=v[i];
nr[p].y=v[j];
nr[p].z=v[k];
nr[p].s=nr[p].x+nr[p].y+nr[p].z;
}
}
}
sort( nr + 1, nr + n + 1, myfunction);
int lim2=p;
int lim1=1;
for(int i=1;i<=p;i++)
{
if(nr[lim1].s+nr[lim2].s==s)
{
printf("%d %d %d %d %d %d\n",nr[lim1].x,nr[lim1].y,nr[lim1].z,nr[lim2].x,nr[lim2].y,nr[lim2].z);
ok=true;
break;
}
if(nr[lim1].s+nr[lim2].s<s)
{
lim1++;
continue;
}
if(nr[lim1].s+nr[lim2].s>s)
{
lim2--;
continue;
}
}
if(ok==false)
printf("-1\n");
return 0;
}