Cod sursa(job #2660670)

Utilizator blackmanta45Andrei blackmanta45 Data 20 octombrie 2020 02:16:29
Problema Loto Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 1.07 kb
#include <fstream>
#include <algorithm>
#include <vector>
#define s first

#define x second.first

#define y second.second.first

#define z second.second.second
using namespace std;
ifstream fin("loto.in");
ofstream fout("loto.out");

typedef pair <int, pair<int, pair <int, int> > > myPair;
vector<myPair> sol;
int v[110], st, dr, mid, n, S, i, j, k, p;

bool cmp(myPair &a, const myPair &b) {
	return a.first < b.first;
}

int main() {
	fin >> n >> S;
	for (i = 0; i < n; i++)
		fin >> v[i];
	for (i = 0; i < n; i++)
		for (j = i; j < n; j++)
			for (k = j; k < n; k++) {
				sol.push_back(make_pair(v[i] + v[j] + v[k], make_pair(v[i], make_pair(v[j], v[k]))));
			}
	sort(sol.begin(), sol.end());
	for (i = 0; i < sol.size(); i++) {
		auto index = lower_bound(sol.begin(), sol.end(), make_pair(S - sol[i].s, make_pair(0, make_pair(0, 0))), cmp);
		if (index != sol.end() && index->s + sol[i].s == S) {
			fout << sol[i].x << " " << sol[i].y << " " << sol[i].z << " " << index->x << " " << index->y << " " << index->z;
			return 0;
		}
	}
	fout << -1;
}