Pagini recente » Cod sursa (job #652094) | Cod sursa (job #2024617) | Cod sursa (job #586550) | Cod sursa (job #1702787) | Cod sursa (job #1467447)
#include <fstream>
#include <vector>
#define pivot 30000
using namespace std;
ifstream fi("loto.in");
ofstream fo("loto.out");
struct cell {
long nr1, nr2, sum;
};
long n,s,a[101];
vector<cell> h[pivot+1];
cell exists(long nr) {
for (vector<cell>::iterator it = h[nr % pivot].begin(); it!=h[nr % pivot].end(); it++) {
if ((*it).sum == nr) {
return (*it);
}
}
cell c = {0};
return c;
}
int main() {
fi >> n >> s;
for (int i = 0; i<n; i++) {
fi >> a[i];
}
for (int i = 0; i<n; i++) {
for (int j = 0; j<n; j++) {
for (int k = 0; k<n; k++) {
cell aux;
aux.sum = a[i]+a[j]+a[k];
aux.nr1 = a[i];
aux.nr2 = a[j];
h[aux.sum % pivot].push_back(aux);
}
}
}
for (int i = 0; i<n; i++) {
for (int j = 0; j<n; j++) {
for (int k = 0; k<n; k++) {
cell x = exists(s-a[i]-a[j]-a[k]);
if (x.sum) {
fo << x.nr1 << ' ' << x.nr2 << ' ' << (x.sum-x.nr1-x.nr2) << ' ' << a[i] << ' ' << a[j] << ' ' << a[k];
return 0;
}
}
}
}
fo << -1;
return 0;
}