Cod sursa(job #2754986)

Utilizator Turcanu_DavidTurcanu David Turcanu_David Data 26 mai 2021 18:41:47
Problema Loto Scor 0
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 1.76 kb
#include <fstream>
#include <algorithm>

using namespace std;

int v[105], sume[1000005];

int main()
{
    ifstream cin("loto.in");
    ofstream cout("loto.out")
    // de pe infoarena
    int n, s, nr, p=0, ok=-1, okay=0;
    cin>>n>>s;
    for(int i=0; i<n; i++)
        cin>>v[i];
    for(int a=0; a<n; a++)
        for(int b=a; b<n; b++)
            for(int c=b; c<n; c++)
            {
                sume[p]=v[a]+v[b]+v[c];
                p++;
            }
    sort(sume, sume+p);
    int sum1, sum2;
    for(int i=0; i<p; i++)
    {
        int l=0, r=p-1;
        nr=s-sume[i];
        while(l<=r)
        {
            int m = (l+r)/2;
            if(sume[m]>nr)
                r=m-1;
            if(sume[m]<nr)
                l=m+1;
            else
            {
                ok=1;
                sum1=sume[i];
                sum2=nr;
                break;
            }
        }
    }
    if(ok==1)
    {
        for(int a=0; a<n && okay!=1; a++)
            for(int b=a; b<n && okay!=1; b++)
                for(int c=b; c<n && okay!=1; c++)
                {
                    if(v[a]+v[b]+v[c]==sum1)
                    {
                        cout<<v[a]<<" "<<v[b]<<" "<<v[c]<<" ";
                        okay=1;
                    }
                }
        okay=0;
        for(int a=0; a<n && okay!=1; a++)
            for(int b=a; b<n && okay!=1; b++)
                for(int c=b; c<n && okay!=1; c++)
                {
                    if(v[a]+v[b]+v[c]==sum2)
                    {
                        cout<<v[a]<<" "<<v[b]<<" "<<v[c]<<" ";
                        okay=1;
                    }
                }
    }
    else
    {
        cout<<ok;
    }
    return 0;
}