Cod sursa(job #2568580)

Utilizator As932Stanciu Andreea As932 Data 4 martie 2020 08:12:51
Problema Loto Scor 0
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 1.27 kb
#include <iostream>
#include <fstream>
#define nmax 102
using namespace std;
ifstream fin("loto.in");
ofstream fout("loto.out");

int n,s,cnt,v[nmax];
struct suma
{
    int s,x,y,z;
}sum[nmax*nmax*nmax];

bool cmp(suma a,suma b)
{
    return a.s<b.s;
}

int main()
{
    fin>>n>>s;
    for(int i=1;i<=n;i++)
        fin>>v[i];

    for(int i=1;i<=n;i++)
        for(int j=i;j<=n;j++)
            for(int k=j;k<=n;k++)
            {
                sum[++cnt].s=v[i]+v[j]+v[k];
                sum[cnt].x=v[i];
                sum[cnt].y=v[j];
                sum[cnt].z=v[k];
            }

    sort(sum+1,sum+cnt+1,cmp);

    for(int i=1;i<=cnt;i++)
    {
        int val=s-sum[i].s;

        int st=1,dr=cnt,sol=-1;
        while(st<=dr)
        {
            int mij=(st+dr)/2;
            if(sum[mij].s==val)
            {
                sol=mij;
                break;
            }
            else if(sum[mij].s<val)
                st=mij+1;
            else
                dr=mij-1;
        }

        if(sol!=-1)
        {
            fout<<sum[i].x<<" "<<sum[i].y<<" "<<sum[i].z<<" ";
            fout<<sum[sol].x<<" "<<sum[sol].y<<" "<<sum[sol].z<<" ";
            return 0;
        }
    }
    fout<<"-1";

    return 0;
}