Cod sursa(job #809477)
#include <fstream>
#include <stdlib.h>
using namespace std;
int n;
long int s, v[101],nr=0;
struct loto {int poz;long int sum;} a[10000];
int compare (const void * a, const void * b)
{
return ( *(long int*)a - *(long int*)b );
}
void citire ()
{
ifstream d("loto.in");
d>>n>>s;
for (int i=1;i<=n;++i)
d>>v[i];
d.close();
}
void generare()
{
qsort (v, n, sizeof(long int), compare);
int i , j , k;
for(i=1;i<=n;++i)
for(j=1;j<=n;j++)
for(k=1;k<=n;k++)
{ nr++;
a[nr].sum=v[i]+v[j]+v[k];
a[nr].poz=i*100+j*10+k;
}
}
void parc()
{
ofstream g("loto.out");
int j,i;
for(i=1;i<=nr;++i)
for(j=i;j<=nr;j++)
{
if(a[i].sum+a[j].sum==s)
{
g<<v[a[i].poz%10]<<" "; a[i].poz/=10;
g<<v[a[i].poz%10]<<" "; a[i].poz/=10;
g<<v[a[i].poz%10]<<" "; a[i].poz/=10;
g<<v[a[j].poz%10]<<" "; a[j].poz/=10;
g<<v[a[j].poz%10]<<" "; a[j].poz/=10;
g<<v[a[j].poz%10]<<" "; a[j].poz/=10;
return;
}
}
g<<"-1\n";
return;
}
int main()
{
citire();
generare();
parc();
return 0;
}