Pagini recente » Cod sursa (job #1985787) | Cod sursa (job #926316) | Cod sursa (job #3283531) | Cod sursa (job #758087) | Cod sursa (job #1553853)
#include <fstream>
#include <algorithm>
using namespace std;
ifstream f("loto.in");
ofstream g("loto.out");
int n,v[101],nr;
long S;
typedef struct STR
{
int a,b,c;
long s;
};
STR sum[1000001];
void citire()
{
f>>n>>S;
for(int i=1;i<=n;i++)
f>>v[i];
}
void calc()
{
int Suma;
for(int i=1;i<=n;i++)
for(int j=i;j<=n;j++)
for(int k=j;k<=n;k++)
{
Suma=v[i]+v[k]+v[j];
//if(Suma<=S)
++nr;
sum[nr].s=Suma;
sum[nr].a=i;
sum[nr].b=j;
sum[nr].c=k;
}
}
int comp(STR a,STR b)
{
if(a.s < b.s)return 1;
return 0;
}
void cautbin()
{
int i,j,mij,s1=0,s2=0,ok=0;
i=1;j=nr;
while(i<=j&&ok==0)
{
mij=(i+j)/2;
if(sum[mij].s==S)
{
ok=1;
g<<sum[i].a<<" "<<sum[i].b<<" "<<sum[i].c<<" "<<sum[mij].a<<" "<<sum[mij].b<<" "<<sum[mij].c;
}
else if(sum[mij].s>S) j=mij-1;
else if(sum[mij].s<S) i=mij+1;
}
if(ok==0)g<<"-1";
}
int main()
{
citire();
calc();
sort(sum+1,sum+nr+1,comp);
cautbin();
f.close();
g.close();
return 0;
}