Cod sursa(job #2976911)

Utilizator alessiamtr12Mitrica Alessia alessiamtr12 Data 10 februarie 2023 12:40:59
Problema Loto Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 1.17 kb
#include <fstream>
#include<algorithm>
using namespace std;
ifstream fin("loto.in");
ofstream fout("loto.out");
struct elem
{
    int x,y,z;
    long long sum;
}s[1000005];
int v[105],m;
int n;
long long S,ss;
bool cmp(elem x,elem y)
{
    return x.sum<y.sum;
}
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++)
               {
                   s[++m].x=v[i];
                   s[m].y=v[j];
                   s[m].z=v[k];
                   s[m].sum=v[i]+v[j]+v[k];
               }
    sort(s+1,s+m+1,cmp);

    for(int i=1;i<=m;i++)
    {
        ss=S-s[i].sum;
        int st=1;
        int dr=m;
        while(st<=dr)
        {
            int mid=(st+dr)/2;
            if(s[mid].sum==ss)
            {
                fout<<s[i].x<<" "<<s[i].y<<" "<<s[i].z<<" "<<s[mid].x<<" "<<s[mid].y<<" "<<s[mid].z;
                return 0;
            }
            else
                if(s[mid].sum<ss)
                   st=mid+1;
                 else
                    dr=mid-1;
        }
    }
    fout<<-1;
    return 0;
}