Cod sursa(job #2397383)

Utilizator robertrRotaru Stefan Robert robertr Data 4 aprilie 2019 12:49:15
Problema Loto Scor 30
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 1.08 kb
#include <fstream>
#include <algorithm>
using namespace std;
ifstream f("loto.in");
ofstream g("loto.out");
int n,s,v[105],nr;
struct loto
{
    int s;
    int x1,x2,x3;
}sum[100000005];
inline bool comp(loto a,loto b)
{
    return a.s<b.s;
}
void afis(int i)
{
    g<<sum[i].x1<<" "<<sum[i].x2<<" "<<sum[i].x3<<" ";
}
int main()
{
    f>>n>>s;
    for(int i=1;i<=n;i++)
        f>>v[i];
    for(int i=1;i<=n;i++)
        for(int j=1;j<=n;j++)
            for(int k=1;k<=n;k++)
    {
        sum[++nr].s=v[i]+v[j]+v[k];
        sum[nr].x1=v[i];
        sum[nr].x2=v[j];
        sum[nr].x3=v[k];
    }
    sort(sum+1,sum+nr+1,comp);
    for(int i=1;i<=nr;i++)
    {
        int s1=s-sum[i].s;
        int st=1,dr=nr;
        while(st<=dr)
        {
            int mij=(st+dr)/2;
            if(sum[mij].s==s1)
            {
                afis(i);
                afis(mij);
                return 0;
            }
            if(sum[mij].s<s1)
                st=mij+1;
            else dr=mij-1;
        }
    }
    g<<-1<<'\n';
    return 0;
}