Pagini recente » Cod sursa (job #1870956) | Cod sursa (job #473057) | Cod sursa (job #772877) | Cod sursa (job #1413715) | Cod sursa (job #2746994)
#include <iostream>
#include <fstream>
#include <algorithm>
#include <vector>
using namespace std;
ifstream f("loto.in");
ofstream g("loto.out");
long long n,S;
long long nr;
vector<long long> sumePosibile;
vector<long long> rezultate;
int st,dr,mij,rest;
bool dei(){
for (int i=0;i<rezultate.size();i++){
rest=S-rezultate[i];
st=0;
dr=rezultate.size()-1;
while (st<=dr){
mij=(st+dr)/2;
if (rezultate[mij]==rest){
return true;
}
if (rezultate[mij]>rest) dr=mij-1;
else st=mij+1;
}
}
return false;
}
int main(){
long long x, sumaCurenta;
f>>n>>S;
for(int i=1;i<=n;i++){
f>>x;
sumePosibile.push_back(x);
}
for(int i=0;i<n;i++){
for(int j=i;j<=n;j++){
for(int k=j;k<=n;k++){
sumaCurenta=sumePosibile[i]+sumePosibile[j]+sumePosibile[k];
rezultate.push_back(sumaCurenta);
}
}
}
sort(rezultate.begin(),rezultate.end());
bool posibil;
posibil = dei();
if(posibil == false) g<<-1;
else{
bool ok = false;
for (int i=0;i<n&&ok==false;i++){
for (int j=i;j<n&&ok==false;j++){
for (int k=j;k<n&&ok==false;k++){
if (sumePosibile[i]+sumePosibile[j]+sumePosibile[k]==rest){
g<<sumePosibile[i]<<" "<<sumePosibile[j]<<" "<<sumePosibile[k]<<" ";
ok=true;
}
}
}
}
ok = false;
for (int i=0;i<n&&ok==false;i++){
for (int j=i;j<n&&ok==false;j++){
for (int k=j;k<n&&ok==false;k++){
if (sumePosibile[i]+sumePosibile[j]+sumePosibile[k]==S-rest){
g<<sumePosibile[i]<<" "<<sumePosibile[j]<<" "<<sumePosibile[k]<<" ";
ok=true;
}
}
}
}
}
return 0;
}