Cod sursa(job #792063)

Utilizator robertpoeRobert Poenaru robertpoe Data 26 septembrie 2012 13:19:19
Problema Loto Scor 5
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.13 kb
#include<fstream>
#include<algorithm>
#define dim 11
using namespace std;
ifstream f("loto.in");
ofstream g("loto.out");
int n,m,i,j,k,s,p;
int x;
int a[dim];
int b[dim];
inline int loton(int x)
{
    int li=1,ls=k,mij;
    while(li<=ls)
    {
        mij=(li+ls)>>1;
        if(b[mij]==x)
        return 1;
        else
        if(b[mij]<x)
        li=mij+1;
        else
        ls=mij-1;
        }
        return 0;
}
void first()
{
    k=0;
    for(i=1;i<=n;++i)
    for(j=i;j<=n;++j)
    for(p=j;p<=n;++p)
    {
        ++k;
		b[k]=a[i]+a[j]+a[p];
    }
    sort(b+1,b+k+1);
}
int main()
{
    f>>n>>s;
    for(i=1;i<=n;++i)
    f>>a[i];
    first();
    for(i=1;i<=k;++i)
    if(loton(s-b[i]))
	{
	    x=b[i];
	    for(i=1;i<=n;++i)
		for(j=i;j<=n;++j)
		for(p=j;p<=n;++p)
		if(a[i]+a[j]+a[p]==x)
		{
		    g<<a[i]<<' '<<a[j]<<' '<<a[p]<<' ';
		    x=s-x;
		    for(i=1;i<=n;++i)
		    for(j=i;j<=n;++j)
		    for(p=j;p<=n;++p)
		    if(a[i]+a[j]+a[p]==x)
		    {
		        g<<a[i]<<' '<<a[j]<<' '<<a[p]<<'\n';
		        return 0;
            }
        }
	}
	g<<-1<<'\n';
	return 0;
}