Cod sursa(job #568076)

Utilizator Adrian1997Radulescu Adrian Adrian1997 Data 30 martie 2011 19:57:56
Problema Loto Scor 100
Compilator cpp Status done
Runda 102 Marime 0.95 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;
}