Pagini recente » Cod sursa (job #1795228) | Cod sursa (job #234711) | Cod sursa (job #912808) | Cod sursa (job #1576369) | Cod sursa (job #916656)
Cod sursa(job #916656)
#include <iostream>
#include <vector>
#include <algorithm>
#include <fstream>
using namespace std;
#define NMAX 105
int N, S, A[NMAX];
int main()
{
ifstream in("loto.in");
ofstream out("loto.out");
in >> N >> S;
for(int i = 0; i < N; i++)
in >> A[i];
sort(A, A+N);
vector<int> sums;
for(int i = 0; i < N;++i)
for(int j = 0; j < N; ++j)
sums.push_back(A[i]+A[j]);
sort(sums.begin(), sums.end());
int sz = sums.size();
for(int i = 0; i < sz; ++i)
for(int j = 0; j < sz; j++)
{
int s = S - sums[i] - sums[j];
if(binary_search(sums.begin(), sums.end(), s))
{
int s1, s2, s3;
s1 = sums[i];
s2 = sums[j];
s3 = S - s1 - s2;
// solution
for(int i = 0; i < N; ++i){
int p = s1 - A[i];
if(binary_search(A, A+N, p)){
out << A[i] << " " << p << " ";
break;
}
}
for(int i = 0; i < N; ++i){
int p = s2 - A[i];
if(binary_search(A, A+N, p)){
out << A[i] << " " << p << " ";
break;
}
}
for(int i = 0; i < N; ++i){
int p = s3 - A[i];
if(binary_search(A, A+N, p)){
out << A[i] << " " << p << " ";
break;
}
}
return 0;
}
}
out << -1 << endl;
return 0;
}