Pagini recente » Cod sursa (job #546725) | Cod sursa (job #863590) | Cod sursa (job #2184032) | Cod sursa (job #952306) | Cod sursa (job #2746651)
#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>::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){
g<<numerePosibile[i]<<" "<<numerePosibile[j]<<" "<<numerePosibile[k]<<" ";
break;
}
}
}
}
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 == rest){
g<<numerePosibile[i]<<" "<<numerePosibile[j]<<" "<<numerePosibile[k];
break;
}
}
}
}
}else{
g<<-1;
}
return 0;
}