Pagini recente » Cod sursa (job #889479) | Cod sursa (job #2911009) | Cod sursa (job #1239663) | Cod sursa (job #1066428) | Cod sursa (job #808767)
Cod sursa(job #808767)
#include <fstream>
#include <algorithm>
#include <functional>
#include <vector>
#include <ctime>
#include <cstdlib>
#define pb push_back
#define f first
#define s second
#define mp make_pair
#define ll long long
const int mod = 666013;
const int maxn = 101;
using namespace std;
vector <pair <long long, pair <short, pair <short, short> > > > hash[mod + 1];
int n, S, A[maxn];
ifstream fin("loto.in");
inline int modd(int x) {
if(x > mod) return x % mod;
return x;
}
int main() {
freopen("loto.out", "w", stdout);
fin >> n >> S;
for(int i = 1; i <= n; ++i)
fin >> A[i];
for(int i = 1; i <= n; ++i)
for(int j = i; j <= n; ++j)
for(int k = j; k <= n; ++k) {
ll s = A[i] + A[j] + A[k];
hash[modd(s)].pb(mp(s,mp(i,mp(j,k))));
}
for(int i = 1; i <= n; ++i)
for(int j = i; j <= n; ++j)
for(int k = j; k <= n; ++k) {
ll s = A[i] + A[j] + A[k];
if(S < s) continue;
s = S - s;
int curr = modd(s);
for(int l = 0; l < hash[curr].size(); ++l)
if(hash[curr][l].f == s) {
//houston we have a winner
int a = A[hash[curr][l].s.f];
int b = A[hash[curr][l].s.s.f];
int c = A[hash[curr][l].s.s.s];
printf("%d %d %d %d %d %d\n", A[i], A[j], A[k], a, b, c);
return 0;
}
}
//Gigel pierde
printf("-1\n");
return 0;
}