Pagini recente » Cod sursa (job #965154) | Cod sursa (job #3177790) | Cod sursa (job #1599428) | Cod sursa (job #1380720) | Cod sursa (job #2196374)
#include <fstream>
#include <algorithm>
using namespace std;
ifstream f("loto.in");
ofstream g("loto.out");
int n,s,v[101],i,j,k,nr,sol;
struct loto{
int val,a,b,c;
}sum[1000001];
int cmp(loto x,loto y){
return x.val<y.val;
}
void cautare(int x,int st,int dr){
int mij;
while(st<=dr){
mij=(st+dr)/2;
if(sum[mij].val==x){
sol=mij;
break;
}
if(sum[mij].val<x)
st=mij+1;
else
dr=mij-1;
}
}
int main()
{
f>>n>>s;
for(i=1;i<=n;i++)
f>>v[i];
for(i=1;i<=n;i++)
for(j=i;j<=n;j++)
for(k=j;k<=n;k++){
nr++;
sum[nr].val=v[i]+v[j]+v[k];
sum[nr].a=v[i];
sum[nr].b=v[j];
sum[nr].c=v[k];
}
sort(sum+1,sum+nr+1,cmp);
sol=-1;
for(i=1;i<=nr&&sum[i].val<=s/2;i++){
cautare(s-sum[i].val,i+1,nr);
if(sol!=-1){
g<<sum[i].a<<" "<<sum[i].b<<" "<<sum[i].c<<" "<<sum[sol].a<<" "<<sum[sol].b<<" "<<sum[sol].c;
return 0;
}
}
g<<sol;
return 0;
}