Cod sursa(job #2689571)

Utilizator Ninja951Andrei Vila Ninja951 Data 21 decembrie 2020 13:40:14
Problema Loto Scor 80
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 1.48 kb
#include <fstream>
#include <iostream>
#include <algorithm>
using namespace std;
ifstream in("loto.in");
ofstream out("loto.out");
int v[101],sume[1000000];
void f(int v[], int n, int s)
{
    for(int i=1; i<=n; i++)
    {
        for(int j=1; j<=n; j++)
        {
            for(int k=1; k<=n; k++)
            {
                if(v[i]+v[j]+v[k]==s)
                {
                    out<<v[i]<<" "<<v[j]<<" "<<v[k]<<" ";
                    return;
                }
            }
        }
    }
}

int main()
{
    int n,s,indice=1,st,dr,mid,ok=0;
    in>>n>>s;
    for(int i=1; i<=n; i++)
    {
        in>>v[i];
    }
    for(int i=1; i<=n; i++)
    {
        for(int j=1; j<=n; j++)
        {
            for(int k=1; k<=n; k++)
            {
                sume[indice]=v[i]+v[j]+v[k];
                indice++;
            }
        }
    }
    sort(sume+1,sume+indice);
    for(int i=1; i<indice; i++)
    {
        st=1;
        dr=indice-1;
        while(st<=dr)
        {
            mid=(st+dr)/2;
            if(sume[mid]<s-sume[i])
            {
                st=mid+1;
            }
            else if(sume[mid]>s-sume[i])
            {
                dr=mid-1;
            }
            else
            {
                ok=sume[i];
                break;
            }
        }
    }
    if(ok>0)
    {
        f(v,n,ok);
        f(v,n,s-ok);
    }
    else
    {
        out<<"-1";
    }
    return 0;
}