Cod sursa(job #424811)

Utilizator darrenRares Buhai darren Data 25 martie 2010 11:04:41
Problema Loto Scor 5
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.17 kb
#include<fstream>
#include<algorithm>
using namespace std;

void read();
void doit();

int n;
long long s;
int v[105], v1[105], v2[105];
pair<int, int> ta1[105], ta2[105];
int t1 = -1, t2 = -1;

int main() {
	read();
	doit();
	return 0;
}

void read() {
	ifstream fin("loto.in");
	fin >> n >> s;
	for (int i = 0; i < n; ++i)
		fin >> v[i];
	fin.close();
}

void doit() {
	int i, j;
	for (i = 0; i < n; ++i)
		for (j = 0; j < n; ++j) {
			v1[++t1] = v[i] + v[j];
			ta1[t1].first = i;
			ta1[t1].second = j;
		}
	for (i = 0; i < n; ++i)
		for (j = 0; j <= t1; ++j) {
			v2[++t2] = v[i] + v1[j];
			ta2[t2].first = i;
			ta2[t2].second = j;
		}
		
	int pos;
	ofstream fout("loto.out");
	for (i = 0; i <= t2; ++i) {
		pos = -1;
		for (j = 0; j <= t2; ++j)
			if (v2[j] == s - v2[i]) {
				pos = j;
				break;
			}
			
		if (pos != -1) {
			fout << v[ta2[i].first] << ' ' << v[ta2[pos].first] << ' ' 
				<< v[ta1[ta2[i].second].first] << ' ' << v[ta1[ta2[i].second].second] << ' '
				<< v[ta1[ta2[pos].second].first] << ' ' << v[ta1[ta2[pos].second].second];
			
			
			fout.close();
			return;
		}
	}
	fout << -1;
	fout.close();
}