Cod sursa(job #978593)

Utilizator alex_HarryBabalau Alexandru alex_Harry Data 29 iulie 2013 10:23:08
Problema Loto Scor 25
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.36 kb
#include <fstream>
#include <algorithm>
using namespace std;
ifstream f("loto.in");
ofstream g("loto.out");
struct Element{
int value;
int first;
int sec;
int last;
};
Element Sums[1000005];
int N,S,Array[105],Top=1,Sol[10],sum,ind;
bool cmp(Element a,Element b)
{
    return a.value<b.value;
}
void Read()
{
    int i;
    f>>N>>S;
    for(i=1;i<=N;i++)
        f>>Array[i];
    int j,k;
    for(i=1;i<=N;i++)
        for(j=1;j<=N;j++)
            for(k=1;k<=N;k++)
                Sums[++ind].value=Array[i]+Array[j]+Array[k],Sums[ind].first=i,Sums[ind].sec=j,Sums[ind].last=k;
    sort(Sums+1,Sums+ind+1,cmp);
}
int Binary_Search(int val)
{
    int st=1,dr=ind,mid;
    while(st<=dr)
    {
        mid=(st+dr)/2;
        if(val+Sums[mid].value==S)
            return mid;
        if(val+Sums[mid].value<S)
            st=mid+1;
        if(val+Sums[mid].value>S)
            dr=mid-1;
    }
    return -1;
}
void Browse()
{
    int i;
    for(i=1;i<=ind;i++)
    {
        int poz=Binary_Search(Sums[i].value);
        if(poz!=-1)
        {
            g<<Array[Sums[i].first]<<" "<<Array[Sums[i].sec]<<" "<<Array[Sums[i].last]<<" "<<Array[Sums[poz].first]<<" "<<Array[Sums[poz].sec]<<" "<<Array[Sums[poz].last]<<"\n";
            return;
        }
    }
    g<<-1<<"\n";
}
int main()
{
    Read();
    Browse();
    return 0;
}