Pagini recente » Cod sursa (job #2691290) | Cod sursa (job #3135557) | Cod sursa (job #2444688) | Cod sursa (job #2124688) | Cod sursa (job #981831)
Cod sursa(job #981831)
#include<cstdio>
#include<algorithm>
using namespace std;
const int MAXN=110;
const int MAXB=1000010;
int n,s,nrb;
int v[MAXN];
struct loto
{
int s,i,j,k;
};
loto b[MAXB];
void read()
{
FILE *fin=fopen("loto.in","r");
fscanf(fin,"%d%d",&n,&s);
for (int i=1; i<=n; ++i)
fscanf(fin,"%d",&v[i]);
fclose(fin);
}
int binary_search(int low, int high, int value)
{
int mid;
while (low<=high)
{
mid=(low+high)/2;
if (b[mid].s==value)
return mid;
else if (value<b[mid].s)
high=mid-1;
else if (value>b[mid].s)
low=mid+1;
}
return 0;
}
bool cmp(loto a, loto b)
{
return a.s<b.s;
}
void solve()
{
FILE *fout=fopen("loto.out","w");
int i,j,k;
for (i=1; i<=n; ++i)
{
for (j=1; j<=n; ++j)
{
for (k=1; k<=n; ++k)
{
++nrb;
b[nrb].s=v[i]+v[j]+v[k];
b[nrb].i=v[i];
b[nrb].j=v[j];
b[nrb].k=v[k];
}
}
}
sort(b+1,b+nrb+1,cmp);
i=j=0;
for (i=1; i<=nrb; ++i)
{
j=binary_search(1,nrb,s-b[i].s);
if (j)
{
fprintf(fout,"%d %d %d %d %d %d\n",b[i].i,b[i].j,b[i].k,b[j].i,b[j].j,b[j].k);
fclose(fout);
return;
}
}
fprintf(fout,"-1\n");
fclose(fout);
}
int main()
{
read();
solve();
return 0;
}