Pagini recente » Cod sursa (job #1896288) | Cod sursa (job #2868957) | Cod sursa (job #2550068) | Cod sursa (job #2885309) | Cod sursa (job #792057)
Cod sursa(job #792057)
//
// main.cpp
// a1
//
// Created by abc on 9/20/12.
// Copyright (c) 2012 abc. All rights reserved.
//
# include <iostream>
# include <cstdio>
# include <cstdlib>
# include <iomanip>
# include <cmath>
# include <map>
# include <vector>
# include <set>
# include <algorithm>
using namespace std;
# define ISALPHA(Q) (('a' <= Q && Q <= 'z') || ('A' <= Q && Q <= 'Z'))
# define ISDIGIT(a) ('0' <= a && a <= '9')
# define TODIGIT(a) (a - '0')
# define LIKELY(a) (__builtin_expect((a), 1))
# define UNLIKELY(a) (__builtin_expect(!!(a), 0))
typedef unsigned char U8;
typedef long long LONG;
void init()
{
freopen("loto.in", "r", stdin);
freopen("loto.out", "w", stdout);
}
template <typename T> void read(vector<T> &vec)
{
for(size_t i=0; i<vec.size(); ++i) {
cin >> vec[i];
}
}
typedef struct __cont{
int sum;
int a,b,c;
} Cont_t;
struct key_cmp
{
bool operator()(const __cont &a, const __cont &b) { return (a.sum < b.sum); }
};
int main(int argc, const char * argv[])
{
//init();
int N, S; cin >> N >> S;
vector<int> vec(N); read(vec);
//sort(vec.begin(), vec.end());
set<Cont_t, key_cmp> conv;
for(int i=0; LIKELY(i<N); ++i)
{
for(int k=0; LIKELY(k<N); ++k)
{
for(int j=0; LIKELY(j<N); ++j)
{
conv.insert({vec[i]+vec[k]+vec[j], vec[i], vec[k], vec[j]});
}
}
}
set<Cont_t>::iterator left = conv.begin();
set<Cont_t>::reverse_iterator right = conv.rbegin();
for(; left != conv.end() && right != conv.rend() && left->sum <= right->sum; )
{
int tS = left->sum + right->sum;
if (tS == S)
{
printf("%d %d %d %d %d %d", left->a, left->b, left->c,
right->a, right->b, right->c);
return 0;
}
else if (tS < S) ++left;
else if (tS > S) ++right;
else {
fprintf(stderr, "WTF?!");
return 1;
}
}
cout << -1;
return 0;
}