Cod sursa(job #2154482)

Utilizator adystar00Bunea Andrei adystar00 Data 6 martie 2018 23:14:25
Problema Loto Scor 20
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.34 kb
#include <iostream>
#include <fstream>
#include <algorithm>
using namespace std;
int nr[110];
struct prb
{
    int s,a,b,c;
};
prb v[100010];
bool cmp (prb a, prb b)
{
    return a.s<b.s;
}
int main()
{
    ifstream fin ("loto.in");
    ofstream fout ("loto.out");
    int n,s,i,j,k,cnt=0,val,l1,l2,mij;
    fin>>n>>s;
    for(i=1; i<=n; i++)
        fin>>nr[i];
    for(i=1; i<=n; i++)
        for(j=i; j<=n; j++)
            for(k=i; k<=n; k++)
            {
                cnt++;
                v[cnt].s=nr[i]+nr[j]+nr[k];
                v[cnt].a=nr[i];
                v[cnt].b=nr[j];
                v[cnt].c=nr[k];
            }
    sort(v+1,v+cnt+1,cmp);

    for(i=1; i<=cnt; i++)
    {
        val=s-v[i].s;
        if(val<0)
            break;
        else
        {
            l1=i;
            l2=cnt;
            while(l1<=l2)
            {
                mij=(l1+l2)/2;
                if(v[mij].s>val)
                {
                    l2=mij-1;
                }
                else if(v[mij].s==val)
                {
                    fout<<v[i].a<<" "<<v[i].b<<" "<<v[i].c<<" "<<v[mij].a<<" "<<v[mij].b<<" "<<v[mij].c;
                    return 0;
                }
                else
                    l1=mij+1;
            }
        }
    }
    fout<<"-1";
    return 0;
}