Cod sursa(job #500733)

Utilizator FERI24Forrai Francisc FERI24 Data 12 noiembrie 2010 22:44:00
Problema Loto Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 1 kb
#include <stdio.h>
#include <algorithm>
using namespace std;
FILE *f,*g;
int n,s,a[101],k=0;

struct sum
{int s;
 int b1,b2,b3;
}v[1000001];
 
int cmp(sum a,sum b)
{if(a.s<b.s)
  return 1;
return 0;
}
 
int search(int x)
{int p,u,m;
 p=1;
 u=k;
 while(p<=u)
 {m=(p+u)/2;
  if(x==v[m].s)
    return m;
  else
     if(x<v[m].s)
        u=m-1;
      else p=m+1;
 }
return 0;
}

 
int main()
{int i,j;
 f=fopen("loto.in","r");
 g=fopen("loto.out","w");
  
 fscanf(f,"%d %d",&n,&s);
  
 for(i=1;i<=n;i++)
    fscanf(f,"%d",&a[i]);
 int p;
 for(i=1;i<=n;i++)
    for(j=i;j<=n;j++)
       for(p=j;p<=n;p++)
       {k++;
        v[k].s=a[i]+a[j]+a[p];
        v[k].b1=a[i];
        v[k].b2=a[j];
        v[k].b3=a[p];
       }      
  
 sort(v+1,v+k+1,cmp);  
int x;
for(i=1;i<=k;i++)
 {x=s-v[i].s;
  p=search(x);
  if(p!=0)
 {
     fprintf(g,"%d %d %d %d %d %d",v[i].b1,v[i].b2,v[i].b3,v[p].b1,v[p].b2,v[p].b3);
  return 0;
  }
}
 fprintf(g,"-1");
return 0;
}