Pagini recente » Cod sursa (job #2406079) | Cod sursa (job #658409) | Cod sursa (job #2347821) | Cod sursa (job #91653) | Cod sursa (job #2590117)
#include <fstream>
#include <vector>
#include <algorithm>
#include <iostream>
#define dim 101
using namespace std;
ifstream fin("loto.in");
ofstream fout("loto.out");
pair<int,int> r[dim*dim*dim];
int v[dim],n,s,i,sz;
int caut(int st,int dr,int x){
///caut fix val x
while(st<=dr){
int mid=(st+dr)/2;
cout<<x<<" "<<r[mid].first<<"\n";
if(r[mid].first>x){
dr=mid-1;
}
else if(r[mid].first<x){
st=mid+1;
}
else
{
return mid;
}
}
return 0; /// nua fost gasit
}
void afis(int x){
fout<<v[x%101]<<" "<<v[x/101%101]<<" "<<v[x/101/101]<<" ";
}
int main()
{
fin>>n>>s;
for(i=1;i<=n;i++)
fin>>v[i];
for(int i=1;i<=n;i++){
for(int j=i;j<=n;j++)
for(int k=j;k<=n;k++){
r[++sz].first=v[i]+v[j]+v[k];
if(r[sz].first>s){
sz--;
continue;
}
/// tin in baza 101 pt ca sunt indici pana la 100 si nu am nevoie de ei la afisat
r[sz].second=i*101*101+j*101+k;
}
}
sort(r+1,r+sz+1);
int sp2=s/2;
for(int it=1;r[it].first<=sp2;it++){
// cout<<r[it].first<<endl;
int rez=caut(it+1,sz,s-r[it].first);
if(rez){
afis(r[it].second);
afis(r[rez].second);
return 0;
}
}
fout<<-1;
}