Pagini recente » Cod sursa (job #694037) | Cod sursa (job #1211991) | Cod sursa (job #1853142) | Cod sursa (job #556076) | Cod sursa (job #2746983)
#include <iostream>
#include <fstream>
#include <algorithm>
using namespace std;
ifstream f("loto.in");
ofstream g("loto.out");
long long n,S;
long long nr;
long long sumePosibile[101];
long long rezultate[1000002];
void afisare(long long s1){
for (int i=1;i<=n;i++){
for (int j=i;j<=n;j++){
for (int k=j;k<=n;k++){
if (sumePosibile[i]+sumePosibile[j]+sumePosibile[k]==s1){
g<<sumePosibile[i]<<" "<<sumePosibile[j]<<" "<<sumePosibile[k]<<" ";
return;
}
}
}
}
}
int main(){
int st,dr,mij,rest;
f>>n>>S;
for(int i=1;i<=n;i++){
f>>sumePosibile[i];
}
nr=0;
for(int i=1;i<=n;i++){
for(int j=i;j<=n;j++){
for(int k=j;k<=n;k++){
rezultate[nr]=sumePosibile[i]+sumePosibile[j]+sumePosibile[k];
nr++;
}
}
}
sort(rezultate,rezultate+nr);
bool posibil = false;
for (int i=0;i<nr && posibil == false;i++){
rest=S-rezultate[i];
st=0;
dr=nr-1;
while (st<=dr && posibil == false){
mij=(st+dr)/2;
if (rezultate[mij]==rest){
afisare(rest);
afisare(S-rest);
posibil = true;
}
if (rezultate[mij]>rest) dr=mij-1;
else st=mij+1;
}
}
if(posibil == false) g<<-1;
return 0;
}