Pagini recente » Cod sursa (job #542291) | Cod sursa (job #1640825) | Cod sursa (job #1052456) | Cod sursa (job #245931) | Cod sursa (job #808768)
Cod sursa(job #808768)
#include<iostream>
#include<vector>
#include<fstream>
#define P 666013
using namespace std;
vector<int> h[P];
vector<int>::iterator find(int x){
int r=x%P;
vector<int>::iterator it;
for(it=h[r].begin();it!=h[r].end();++it)
if(*it==x) return it;
return h[r].end();
}
int push(int x){
int r=x%P;
if(find(x)==h[r].end()){
h[r].push_back(x);
return 1;
}
}
void pop(int x){
int r=x%P;
vector<int>::iterator it=find(x);
if(it!=h[r].end()) h[r].erase(it);
}
int main(){
int a[101],s,i,j,k,n,s1,s2;
vector<int> sum;
ifstream fin("loto.in");
ofstream fout("loto.out");
fin>>n>>s;
for(i=1;i<=n;++i)
fin>>a[i];
fin.close();
for(i=1;i<=n;++i)
for(j=i;j<=n;++j)
for(k=j;k<=n;++k)
if(push(a[i]+a[j]+a[k])) sum.push_back(a[i]+a[j]+a[k]);
vector<int>::iterator it;
bool ok=0;
for(it=sum.begin();it!=sum.end();++it)
if(find(s-*it)!=h[(s-*it)%P].end()){
s1=*it; s2=s-*it; ok=1;
for(i=1;i<=n;++i)
for(j=i;j<=n;++j)
for(k=j;k<=n;++k)
if(a[i]+a[j]+a[k]==s1) fout<<a[i]<<' '<<a[j]<<' '<<a[k]<<' ';
for(i=1;i<=n;++i)
for(j=i;j<=n;++j)
for(k=j;k<=n;++k)
if(a[i]+a[j]+a[k]==s2) fout<<a[i]<<' '<<a[j]<<' '<<a[k];
break;
}
if(!ok) fout<<-1;
return 0;
}