Pagini recente » Cod sursa (job #170322) | Cod sursa (job #3180017) | Cod sursa (job #2955037) | Cod sursa (job #1660010) | Cod sursa (job #2746510)
#include <iostream>
#include <fstream>
#include <algorithm>
#include <vector>
using namespace std;
ifstream f("loto.in");
ofstream g("loto.out");
bool posibil = false;
long n,S;
vector<long> numerePosibile;
vector<long> rezultate;
vector<long> sol;
vector<long>::iterator it;
vector<long>::iterator go;
int main(){
long x,rest;
f>>n>>S;
for(int i=0;i<n;i++){
f>>x;
numerePosibile.push_back(x);
}
//fac vectorul cu toate sumele partiale
for(int i=0;i<numerePosibile.size();i++){
for(int j=i;j<numerePosibile.size();j++){
for(int k=j;k<numerePosibile.size();k++){
int sumaCurenta;
sumaCurenta = numerePosibile[i]+numerePosibile[j]+numerePosibile[k];
rezultate.push_back(sumaCurenta);
}
}
}
//sortez sumele posibile
sort(rezultate.begin(), rezultate.end());
for(it=rezultate.begin();it!=rezultate.end();it++){
rest = S-*it;
go = find(rezultate.begin(), rezultate.end(), rest);
if(go!=rezultate.end()){
posibil = true;
break;
}
}
if(posibil){
for(int i=0;i<numerePosibile.size();i++){
for(int j=i;j<numerePosibile.size();j++){
for(int k=j;k<numerePosibile.size();k++){
int sumaCurenta;
sumaCurenta = numerePosibile[i]+numerePosibile[j]+numerePosibile[k];
if(sumaCurenta == S-rest){
sol.push_back(numerePosibile[i]);
sol.push_back(numerePosibile[j]);
sol.push_back(numerePosibile[k]);
}
if(sumaCurenta == rest){
sol.push_back(numerePosibile[i]);
sol.push_back(numerePosibile[j]);
sol.push_back(numerePosibile[k]);
}
}
}
}
for(it=sol.begin();it!=sol.end();it++){
g<<*it<<" ";
}
}else{
g<<-1;
}
/*
for(it=rezultate.begin();it!=rezultate.end();it++){
cout<<*it<<" ";
}
*/
return 0;
}