Cod sursa(job #1278511)

Utilizator PetreCatalinFMI Petre Catalin PetreCatalin Data 28 noiembrie 2014 23:34:28
Problema Loto Scor 20
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.23 kb
#include <fstream>
#include <algorithm>

using namespace std;

long long a[105],i,n,s,nr,ok,j,k,poz;

struct per{
    long long s,x,y,z;
}v[1000005];


inline bool cmp(per elem1 , per elem2)
{
    return elem1.s<elem2.s;
}

long long cautbin(long long num)
{
    long long st,dr,mij;
    st=1;dr=nr;
    while (st<=dr) {
        mij=(st+dr)/2;
        if (v[mij].s==num) return mij;
        else
        if (v[mij].s<num) st=mij+1;
        else
        dr=mij-1;
    }
    return 0;
}

int main()
{
    ifstream f("loto.in");
    ofstream g("loto.out");
    f>>n>>s;
    for (i=1;i<=n;++i)
        f>>a[i];

    for (i=1;i<=n;++i)
        for (j=1;j<=n;++j)
            for (k=1;k<=n;++k) {
                v[++nr].s=a[i]+a[j]+a[k];
                v[nr].x=a[i];
                v[nr].y=a[j];
                v[nr].z=a[k];
            }

    sort(v+1,v+nr+1,cmp);

    ok=0;
    for (i=1;i<=nr;++i) {
        poz=cautbin(s-v[i].s);
        if (poz>0) {
            g<<v[i].x<<' '<<v[i].y<<' '<<v[i].z<<' ';
            g<<v[poz].x<<' '<<v[poz].y<<' '<<v[poz].z<<' ';
            ok=1;
            break;
        }
    }

    if (ok==0) g<<"-1";

    f.close();
    g.close();
    return 0;
}