Cod sursa(job #2471772)

Utilizator PredescuSebastianIonPredescu Sebastian Ion PredescuSebastianIon Data 11 octombrie 2019 14:42:07
Problema Loto Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 1.31 kb
#include <fstream>
#include <algorithm>

using namespace std;
ifstream f("loto.in");
ofstream g("loto.out");
struct ceva
{
    int sum;
    int x, y, z;
} v[1000003];
int n,s,l,a[103];
bool cmp(ceva x, ceva y)
{
    return x.sum<y.sum;
}
int main()
{
    f>>n>>s;
    for(int i=1; i<=n; ++i)
    {
        f>>a[i];
    }
    for(int i=1; i<=n; ++i)
    {
        for(int j=i; j<=n; ++j)
        {
            for(int k=j; k<=n; ++k)
            {
                ++l;
                v[l].x=a[i];
                v[l].y=a[j];
                v[l].z=a[k];
                v[l].sum=v[l].x+v[l].y+v[l].z;
            }
        }
    }
    sort(v+1, v+l+1, cmp);
    for(int i=1; i<=l; ++i)
    {
        int x=s-v[i].sum;
        int st=1, dr=l, m;
        while(dr>st)
        {
            m=(dr+st)/2;
            if(v[m].sum<x) st=m+1;
            else if(v[m].sum>x) dr=m-1;
            else
            {
                g<<v[i].x<<" "<<v[i].y<<" "<<v[i].z<<" "<<v[m].x<<" "<<v[m].y<<" "<<v[m].z<<"\n";
                return 0;
            }
        }
        m=(dr+st)/2;
        if(x==v[m].sum)
        {
            g<<v[i].x<<" "<<v[i].y<<" "<<v[i].z<<" "<<v[m].x<<" "<<v[m].y<<" "<<v[m].z<<"\n";
            return 0;
        }
    }
    g<<-1<<"\n";
    return 0;
}