Pagini recente » Cod sursa (job #2437454) | Cod sursa (job #3123123) | Cod sursa (job #57524) | Cod sursa (job #3248586) | Cod sursa (job #1008887)
#include <stdio.h>
#include <math.h>
#include <iostream>
#include <string>
#include <stdlib.h>
#define NMax 101
#define NSum 100*100*100+1
using namespace std;
int caut(int li, int ls, int long long *v, int long long suma)
{
int m = (li + ls) / 2;
if (v[m] == suma)
{
return m;
}
else
if (li < ls)
{
if (v[m] < suma)
return caut(m+1, ls, v, suma);
else
return caut(li, m-1, v, suma);
}
else
return -1;
}
int compare (const void * a, const void * b)
{
return ( *(long long int*)a - *(long long int*)b );
}
long long int rezultat[7];
struct SUM
{
long long int x1, x2, x3;
};
int main()
{
FILE *f = fopen("loto.in", "r"), *g = fopen("loto.out", "w");
int n; int long long s, v[NMax];
fscanf(f, "%d %lld", &n, &s);
for (int i=0; i<n; i++)
{
fscanf(f, "%lld", &v[i]);
}
int long long sume[NSum]; SUM retin[NSum];
int k = 0;
for (int i = 0; i < n; i++)
for (int j = 0; j < n; j++)
for (int x = 0; x < n; x++)
{
int long long l = v[i] + v[j] + v[x];
if ( l < s )
{
sume[k] = l;
retin[k].x1 = v[i], retin[k].x2 = v[j], retin[k].x3 = v[x];
k++;
}
}
qsort(v, n-1, sizeof(long long int), compare);
int gasit = 0;
for (int i=0; i<n; i++)
for (int j=0; j<n; j++)
for (int x = 0; x<k; x++)
{
int long long l = v[i] + v[j] + sume[x];
int result = caut(0, n-1, v, s - l);
if ( result >= 0)
{
fprintf(g, "%lld %lld %lld %lld %lld %lld", retin[x].x1, retin[x].x2, retin[x].x3, v[i], v[j], v[result]);
fclose(f); fclose(g);
return 0;
}
}
fprintf(g, "-1");
fclose(f); fclose(g);
return 0;
}