Pagini recente » Cod sursa (job #2071124) | Istoria paginii utilizator/lord_vetinari | Cod sursa (job #784192) | Cod sursa (job #1391867) | Cod sursa (job #2932285)
#include <fstream>
#include <vector>
using namespace std;
ifstream fin("loto.in");
ofstream fout("loto.out");
const int mod=9917;
vector <int> h[mod];
void update(int x){
int poz=x%mod;
h[poz].push_back(x);
}
bool query(int x){
int poz=x%mod;
for(int i=0;i<h[poz].size();i++){
if(h[poz][i]==x){
return true;
}
}
return false;
}
int v[102],su[1000002];
int main(){
int s,n,si=0,o=0;
bool ok1=0,ok2=0,ok=0;
fin>>n>>s;
for(int i=0;i<n;i++){
fin>>v[i];
}
for(int i=0;i<n;i++){
for(int j=0;j<n;j++){
for(int k=0;k<n;k++){
su[o]=v[i]+v[j]+v[k];
update(su[o]);
o++;
}
}
}
for(int i=0;i<(n*n*n);i++){
si=su[i];
if(query(s-si)){
ok=1;
break;
}
}
if(!ok){
fout<<"-1";
return 0;
}
for(int i=0;i<n;i++){
for(int j=0;j<n;j++){
for(int k=0;k<n;k++){
if(!ok1){
if(v[i]+v[j]+v[k]==si){
fout<<v[i]<<" "<<v[j]<<" "<<v[k]<<" ";
ok1=1;
}
}
if(!ok2){
if(v[i]+v[j]+v[k]==(s-si)){
fout<<v[i]<<" "<<v[j]<<" "<<v[k]<<" ";
ok2=1;
}
}
if(ok1&&ok2){
return 0;
}
}
}
}
fout<<"-1";
return 0;
}