Cod sursa(job #2557209)

Utilizator Codrut112Codrut Copas Codrut112 Data 25 februarie 2020 17:13:26
Problema Loto Scor 5
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 1.48 kb

#include <bits/stdc++.h>

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

int n,s,i,j,l,x,ok,k,w[101],nr,u[7],poz1,poz2;
struct loto
{
    int suma;
    int i,j,l;
};
bool comp(loto a,loto b)
{
    return a.suma<b.suma;

}
loto v[1000001];
int caut(int st,int sumabuna)
{
    int  dr=nr;
    while(st<=dr)
    {
        int mid=(st+dr)/2;
        if(v[mid].suma==sumabuna)return mid;
        if(v[mid].suma<sumabuna)st=mid+1;
        if(v[mid].suma>sumabuna)dr=mid-1;
    }


}

int main()
{
    f>>n;
    f>>s;
    for(i=1; i<=n; i++)

        f>>w[i];


    for(i=1; i<=n; i++)
        for(j=1; j<=n; j++)
            for(l=1; l<=n; l++)
            {
                if(w[i]+w[j]+w[l]<s)
                {
                    nr++;
                    v[nr].suma=w[i]+w[j]+w[l];
                    v[nr].i=i;
                    v[nr].j=j;
                    v[nr].l=l;
                }
            }
    sort(v+1,v+nr+1,comp);

    poz1=1;ok=0;
    while(poz1<=nr and ok==0)
    {
        poz2=caut(poz1,s-v[poz1].suma);
        if(v[poz1].suma+v[poz2].suma==s)ok=1;
        else poz1++;
    }
    if(ok==0)g<<-1;
    else
    {
                u[1]=w[v[poz1].i];
                u[2]=w[v[poz1].j];
                u[3]=w[v[poz1].l];
                u[4]=w[v[poz2].i];
                u[5]=w[v[poz2].j];
                u[6]=w[v[poz2].l];
        sort(u+1,u+7);
        for(i=1; i<=6; i++)g<<u[i]<<" ";
    }
}