Cod sursa(job #727032)

Utilizator andreistb1996Satirbasa Andrei andreistb1996 Data 27 martie 2012 18:23:52
Problema Loto Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.85 kb
#include<fstream>
#include<cstdio>
#include<algorithm>
using namespace std;
FILE *f,*g;
int s,n,a[112];
struct loto
{
int s,x1,x2,x3;
};
loto v[1000005];
bool cmp (loto x,loto y)
{return x.s<y.s;
}
int main ()
{f=fopen("loto.in","r");
g=fopen("loto.out","w");
fscanf(f,"%d%d",&n,&s);
int i,posib=0;
for (i=0;i<n;i++)
fscanf (f,"%d",&a[i]);
int j,k;
for (i=0; i<n;i++)
for (j=i;j<n;j++)
for (k=j;k<n;k++)
{v[posib].s=a[i]+a[j]+a[k];
v[posib].x1=a[i];
v[posib].x2=a[j];
v[posib].x3=a[k];
posib++;
}
sort(v,v+posib,cmp);
int st,dr,m,suma;
for (i=0; i<posib; i++)
{st=0;
dr=posib-1;
suma=s-v[i].s;
while (st<=dr)
{
m=(st+dr)/2;
if (v[m].s==suma)
{fprintf(g,"%d %d %d %d %d %d\n",v[i].x1,v[i].x2,v[i].x3,v[m].x1,v[m].x2,v[m].x3);
return 0;
}
else
if (v[m].s<suma)
st=m+1;
else
dr=m-1;}}
fprintf (g,"-1\n");
return 0;
}