Pagini recente » Cod sursa (job #2038580) | Cod sursa (job #2632261) | Cod sursa (job #628544) | Cod sursa (job #944197) | Cod sursa (job #1434864)
#include <cstdio>
#include <algorithm>
using namespace std;
struct LOTO
{
int sum;
char i1,i2,i3;
};
LOTO v[1000001];
int q[101];
bool cmp ( LOTO a, LOTO b )
{
return a.sum<b.sum;
}
int main()
{
FILE *fin, *fout;;
int n,s,i,j,k,med,found=-1;
fin=fopen("loto.in","r");
fscanf(fin,"%d%d",&n,&s);
for(i=1;i<=n;++i)
fscanf(fin,"%d",&q[i]);
fclose(fin);
int l=0;
for(i=1;i<=n;++i)
for(j=1;j<=n;++j)
for(k=1;k<=n;++k)
{
++l;
v[l].i1=i;
v[l].i2=j;
v[l].i3=k;
v[l].sum=q[i]+q[j]+q[k];
}
sort(v+1,v+l+1,cmp);
fout=fopen("loto.out","w");
for(i=1;i<=l;++i)
for(j=1;j<=l;++j)
for(k=1;k<=l;++k)
{
int s1=s-(q[i]+q[j]+q[k]);
int st=1,dr=l;
while(st<=dr)
{
med=(st+dr)/2;
if(v[med].sum==s1)
{
found=0;
fprintf(fout,"%d %d %d %d %d %d",q[i],q[j],q[k],v[med].i1,v[med].i2,v[med].i3);
return 0;
}
else
if(v[med].sum<s1)
st=med+1;
else
dr=med-1;
}
}
if(found==-1)
fprintf(fout,"%d",found);
fclose(fout);
return 0;
}