Pagini recente » Cod sursa (job #2763025) | Cod sursa (job #938632) | Cod sursa (job #1784225) | Cod sursa (job #2112147) | Cod sursa (job #2746988)
#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];
bool dei(){
for (int i=0;i<nr;i++){
rest=S-rezultate[i];
st=0;
dr=nr-1;
while (st<=dr){
mij=(st+dr)/2;
if (rezultate[mij]==rest){
afisare(rest);
afisare(S-rest);
return true;
}
if (rezultate[mij]>rest) dr=mij-1;
else st=mij+1;
}
}
return false;
}
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;
posibil = dei();
if(posibil == false) g<<-1;
else{
bool ok = false;
for (int i=1;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=1;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;
}