Cod sursa(job #2456586)

Utilizator StefanSanStanescu Stefan StefanSan Data 14 septembrie 2019 19:01:30
Problema Loto Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 1.16 kb
#include <fstream>
#include <algorithm>


using namespace std;

ifstream in("loto.in");
ofstream out("loto.out");

struct four {
	long long int val1, val2, val3, sum;
};

four a[1000005];

long long int n, s, v[105], contor = 1;

bool comp(four x, four y) {
	return x.sum < y.sum;
}

int main() {
	ios_base::sync_with_stdio(false);
	in.tie(NULL), out.tie(NULL);
   
	in >> n >> s;
	for (int i = 1; i <= n; i++)in >> v[i];
	for (int i = 1; i <= n; i++) {
		for (int j = i; j <= n; j++) {
			for (int k = j; k <= n; k++) {
				a[contor].val1 = v[i];
				a[contor].val2 = v[j];
				a[contor].val3 = v[k];
				a[contor].sum = v[i] + v[j] + v[k];
				contor++;
			}
		}
	}
	sort(a + 1, a + contor + 1, comp);
	for (int i = 1; i <= contor; i++) {
		int left = 1, right = contor;
		int val = s - a[i].sum;
		while (left <= right) {
			int mid = (left + right) / 2;
			if (a[mid].sum == val) {
				out << a[mid].val1 << " " << a[mid].val2 << " " << a[mid].val3 << " " << a[i].val1 << " " << a[i].val2 << " " << a[i].val3;
				return 0;
			}
			if (val < a[mid].sum)right = mid - 1;
			else left = mid + 1;
		}
	}
	out << -1;
	return 0;
}