Cod sursa(job #2403459)

Utilizator victorv88Veltan Victor victorv88 Data 11 aprilie 2019 16:24:21
Problema Loto Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 1.56 kb
#include <bits/stdc++.h>

using namespace std;

ifstream f("loto.in");
ofstream g("loto.out");

struct configuratii{
    int e1, e2, e3, suma;
}toate_configuatiile[1000005];

bool operator < (configuratii a, configuratii b)
{
    return a.suma<b.suma;
}

int n, s, elem[105], ind=1, ramase;

void rezolvare()
{
    for (int i=1; i<ind; ++i)
    {
        ramase=s-toate_configuatiile[i].suma;
        int st=1, dr=ind-1, mij;
        while (st<=dr)
        {
            mij=(st+dr)/2;
            if (toate_configuatiile[mij].suma==ramase)
            {
                g << toate_configuatiile[i].e1 <<' ' << toate_configuatiile[i].e2 <<' ' << toate_configuatiile[i].e3 <<' ' << toate_configuatiile[mij].e1 <<' ' << toate_configuatiile[mij].e2 <<' ' << toate_configuatiile[mij].e3;
                return;
            }
            if (toate_configuatiile[mij].suma<ramase)
            {
                st=mij+1;
            }
            else
                dr=mij-1;
        }
    }
    g << -1;

}

int main() {
    f >> n >> s;
    for (int i=1; i<=n; ++i)
    {
        f >> elem[i];
    }
    for (int i=1; i<=n; ++i)
    {
        for (int j=i; j<=n; ++j)
        {
            for (int t=i; t<=n; ++t)
            {
                toate_configuatiile[ind].suma=elem[i]+elem[j]+elem[t];
                toate_configuatiile[ind].e1=elem[i];
                toate_configuatiile[ind].e2=elem[j];
                toate_configuatiile[ind].e3=elem[t];
                ++ind;
            }
        }
    }
    sort(toate_configuatiile+1,toate_configuatiile+ind);
    rezolvare();
    return 0;
}