Cod sursa(job #2203926)

Utilizator toadehuPuscasu Razvan Stefan toadehu Data 13 mai 2018 18:22:35
Problema Loto Scor 5
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.31 kb
#include <bits/stdc++.h>

using namespace std;

struct loto
{
    int a,b,c;
    long long suma;
} v[1000100];

int num[111],nr,s,ans[4],rasp,st,dr;

bool aicisesorteaza (loto x, loto y)
{
    return x.suma<y.suma;
}

int main()
{
    ifstream fin ("loto.in");
    ofstream fout ("loto.out");
    int n;
    fin>>n>>s;
    for (int i=1; i<=n; ++i)
    {
        fin>>num[i];
    }
    for (int i=1; i<=n; ++i)
    {
        for (int j=i; j<=n; ++j)
        {
            for (int k=j; k<=n; ++k)
            {
                nr++;
                v[nr].a=num[i];
                v[nr].b=num[j];
                v[nr].c=num[k];
                v[nr].suma=num[i]+num[j]+num[k];
            }
        }
    }
    sort(v+1,v+nr+1,aicisesorteaza);
    for(int i=1; i<=nr; i++)
    {
        st=1;
        dr=nr;
        int x=s-v[i].suma;
        while(st<=dr)
        {
            int mij=(st+dr)/2;
            if(v[mij].suma==x)
            {
                fout<<v[mij].a<<' '<<v[mij].b<<' '<<v[mij].c<<' '<<v[i].a<<' '<<v[i].b<<' '<<v[i].c;
                return 0;
            }
            if(v[mij].suma<x)
            {
                dr=mij-1;
            }
            else
            {
                st=mij+1;
            }
        }
    }
    fout<<"-1";
}