Pagini recente » Cod sursa (job #2560119) | Cod sursa (job #323424) | Cod sursa (job #2711049) | Cod sursa (job #1588367) | Cod sursa (job #559223)
Cod sursa(job #559223)
#include<fstream>
#include<vector>
#include<iterator>
#include<algorithm>
using namespace std;
#define Nmax 101
struct nod{int s,a,b,c;};
vector<nod>v;
vector<int>::iterator it;
int N,S,nr[Nmax],mid,sol,ok;
void citire()
{
ifstream in("loto.in");
in>>N>>S;
for(int i=1;i<=N;i++)
in>>nr[i];
}
int cmp (nod x, nod y)
{
return x.s<y.s;
}
int cmp2(int x, nod y)
{
return x==y.s;
}
int cbin(int X,int min,int max)
{
if(max<min)
return 0;
mid=(max+min)/2;
if(v[mid].s>X)
return cbin(X,min,mid-1);
else
if(v[mid].s<X)
return cbin(X,mid+1,max);
else
if(v[mid].s==X)
return mid;
}
void solve()
{
ofstream out("loto.out");
int i,j,k;
nod p;
for(i=1;i<=N;i++)
for(j=i;j<=N;j++)
for(k=j;k<=N;k++)
{
p.a=nr[i];
p.b=nr[j];
p.c=nr[k];
p.s=nr[i]+nr[j]+nr[k];
v.push_back(p);
}
sort (v.begin(),v.end(),cmp);
int *P;
int x;
for(i=0;i<v.size();i++)
{
x=S-v[i].s;
P=&x;
sol=cbin(x,1,v.size()-1);
if(sol!=0)
{
out<<v[i].a<<" "<<v[i].b<<" "<<v[i].c<<" "<<v[sol].a<<" "<<v[sol].b<<" "<<v[sol].c;
break;
ok=1;
}
}
/*if(ok==1)
out<<-1;*/
}
int main()
{
citire();
solve();
//ofstream out("loto.out");
int i,l;
l=v.size();
/*for( i=0;i<l;i++)
out<<v[i].a<<" "<<v[i].b<<" "<<v[i].c<<" "<<v[i].s<<endl;*/
}