Pagini recente » Cod sursa (job #121755) | Cod sursa (job #1134101) | Cod sursa (job #785232) | Cod sursa (job #155727) | Cod sursa (job #1971087)
#include <fstream>
#include <vector>
#include <algorithm>
#define mod 666013
using namespace std;
ifstream fin ("loto.in");
ofstream fout ("loto.out");
struct loto {
int x, y, z;
};
int v[105];
vector < loto > $$[mod+3];
int key (int a){
return a%mod;
}
bool cautare(int &a, int &b, int &c, int val){
if (val < 0)
return 0;
int k = key(val);
vector < loto > :: iterator it;
loto aux;
for (it = $$[k].begin(); it != $$[k].end(); ++it){
aux = *it;
if (v[aux.x] + v[aux.y] + v[aux.z] == val){
a = aux.x;
b = aux.y;
c = aux.z;
return 1;
}
}
return 0;
}
void adaug (int a, int b, int c, int val){
if (!cautare(a,b,c,val))
$$[key(val)].push_back((loto) {a,b,c});
}
int main (){
int n,s;
fin >> n >> s;
for (int i = 1; i <= n; ++i)
fin >> v[i];
sort (v+1, v+n+1);
for (int i = 1; i <= n; ++i){
for (int j = i; j <= n; ++j){
for (int k = j; k <= n; ++k){
int sum = v[i] + v[j] + v[k];
adaug(i,j,k, sum);
int a,b,c;
if (cautare(a,b,c,s-sum)){
fout << v[i] << " " << v[j] << " " << v[k] << " " << v[a] << " " << v[b] << " " << v[c];
return 0;
}
}
}
}
fout << -1;
return 0;
}