Cod sursa(job #1036680)

Utilizator leontinLeontin leontin Data 19 noiembrie 2013 15:36:18
Problema Loto Scor 5
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.38 kb
#include<fstream>
#include<algorithm>
using namespace std;
int n,s,nrb;
int v[110];
struct loto
{
    int s,i,j,k;
};
loto b[1000010];
void read()
{
   ifstream f("loto.in");
   f>>n>>s;
    for (int i=1; i<=n; ++i)
       f>>v[i];
}
int binary_search(int low, int high, int value)
{
    int mid;
    while (low<=high)
    {
        mid=(low+high)/2;
        if (b[mid].s==value)
            return mid;
        else if (value<b[mid].s)
            high=mid-1;
        else if (value>b[mid].s)
            low=mid+1;
    }
    return 0;
}
 bool cmp(loto a, loto b)
{
    return a.s<b.s;
}
void solve()
{
    ofstream g("loto.out");

    int i,j,k;
    for (i=1; i<=n; ++i)
    {
        for (j=i; j<=n; ++j)
        {
            for (k=j; k<=n; ++k)
            {
                ++nrb;
                b[nrb].s=v[i]+v[j]+v[k];
                b[nrb].i=v[i];
                b[nrb].j=v[j];
                b[nrb].k=v[k];
            }
        }
    }
    //sort(b+1,b+nrb+1,cmp);
    //for(i=1;i<=n;i++)
   // g<<v[i]<<" ";
    i=j=0;
    for (i=1; i<=nrb; ++i)
    {
        j=binary_search(1,nrb,s-b[i].s);
        if (j)
        {
            g<<b[i].i<<" "<<b[i].j<<" "<<b[i].k<<" "<<b[j].i<<" "<<b[j].j<<" "<<b[j].k<<endl;
            return;
        }
    }
    g<<-1<<endl;
}
int main()
{
    read();
    solve();
    return 0;
}