Pagini recente » Cod sursa (job #1274994) | Cod sursa (job #1938578) | Cod sursa (job #804280) | Cod sursa (job #2098793) | Cod sursa (job #1314834)
#include <stdio.h>
#include <algorithm>
#define MAX 1000001
using namespace std;
FILE *f,*g;
int a[101], i, n, s, k, j, nr;
struct numere{
int s1;
int a, b, c;
};
numere sum[MAX];
int sortare(numere x, numere y){
return x.s1 < y.s1;
}
void sume(){
for(i = 1; i <= n; i++)
for(j = 1; j <= n; j++)
for(k = 1; k <= n; k++){
nr++;
sum[nr].s1 = a[i] + a[j] + a[k];
sum[nr].a = a[i];
sum[nr].b = a[j];
sum[nr].c = a[k];
}
sort(sum + 1, sum + 1 + nr, sortare);
}
void cb(){
for(i = 1; i <= nr; i++){
int k = s - sum[i].s1;
int left = 1, right = nr;
while(left <= right){
int mid = (left + right) / 2;
if(k < sum[mid].s1)
left = mid + 1;
else if (k > sum[mid].s1)
right = mid - 1;
else {
fprintf(g, "%d %d %d %d %d %d\n", sum[i].a, sum[i].b, sum[i].c, sum[mid].a, sum[mid].b, sum[mid].c);
return;
}
}
}
fprintf(g, "-1\n");
return;
}
int main()
{
f = fopen("loto.in", "r");
g = fopen("loto.out", "w");
fscanf(f, "%d%d", &n, &s);
for(i = 1; i <= n; i++){
fscanf(f, "%d", &a[i]);
}
sume();
cb();
fclose(f);
fclose(g);
return 0;
}