Pagini recente » Cod sursa (job #570075) | Cod sursa (job #881493) | Cod sursa (job #2588678) | Cod sursa (job #315646) | Cod sursa (job #741869)
Cod sursa(job #741869)
#include<stdio.h>
#include<algorithm>
using namespace std;
FILE * f=fopen("loto.in","r");
FILE * g= fopen("loto.out","w");
int n, suma,coef;
int v[999],nr;
int v_sume[999999];
void sume()
{
int i,j,k;
for(i=1;i<=n;i++)
{
for(j=i;j<=n;j++)
{
for (k=j;k<=n;k++)
{
v_sume[++nr]=v[i]+v[j]+v[k];
}
}
}
}
int cautbin(long long x)
{
int i,pas=1<<17;
for(i=0;pas!=0;pas>>=1)
{
if(i+pas<=nr && v_sume[i+pas]<=x)
{
i+=pas;
}
}
if(v_sume[i] == x)
return i;
return -1;
}
void sol(long long x)
{
int i,j,k,r;
for(i=1;i<=n;i++)
for(j=i;j<=n;j++)
for (k=j;k<=n;k++)
{
if(v[i]+v[j]+v[k] == x)
{
fprintf(g,"%d %d %d\n",v[i],v[j],v[k]);
return;
}
}
}
void afis1()
{
int i,j,k,r;
for(i=1;i<=n;i++)
{
for(j=i;j<=n;j++)
{
for (k=j;k<=n;k++)
{
r= cautbin(suma-(v[i]+v[j]+v[k]));
if(r!=-1)
{
fprintf(g,"%d %d %d ",v[i],v[j],v[k]);
sol(suma-(v[i]+v[j]+v[k]));
return;
}
}
}
}
fprintf(g,"-1");
}
int main()
{
fscanf(f,"%d",&n);
fscanf(f,"%d",&suma);
coef=n*n*n;
int i;
for(i=1;i<=n;i++)
{
fscanf(f,"%d",&v[i]);
}
sume();
sort(&v_sume[1],&v_sume[n+1]);
afis1();
fclose(f);
fclose(g);
return 0;
}