Cod sursa(job #2693198)

Utilizator rimihaiMihai Radu-Ioan rimihai Data 5 ianuarie 2021 09:39:55
Problema Loto Scor 55
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 1.26 kb
#include <bits/stdc++.h>

using namespace std;

ifstream fin("loto.in");
ofstream fout("loto.out");
int v[105];
int poz,start;
struct puncte
{
    int a,b,c,s;
} pct[200000];

int cautarebin(int val)
{
    int mid,st,dr;
    st=start;
    dr=poz;
    while(st<=dr)
    {
        mid=(st+dr)/2;
        if(pct[mid].s==val)return mid;
        else if(pct[mid].s<val)st=mid+1;
        else dr=mid-1;
    }
    return -1;
}
bool sortare(puncte A, puncte B)
{
    return A.s<=B.s;
}
int main()
{
    int n,suma,ok=0;
    poz=0;
    fin>>n>>suma;
    for(int i=1;i<=n;i++)
    {
        int a;
        fin>>a;
        v[i]=a;
        for(int j=1;j<=i;j++)
            for(int k=1;k<=j;k++)
        {
            poz++;
            pct[poz].s=a+v[j]+v[k];
            pct[poz].a=a;
            pct[poz].b=v[j];
            pct[poz].c=v[k];
        }
    }
    sort(pct+1,pct+poz+1,sortare);
    for(int i=1; i<=poz and ok==0; i++)
    {
        int cautat=suma-pct[i].s;
        start=i;
        int j=cautarebin(cautat);
        if(j!=-1)
        {
            fout<<pct[i].a<<" "<<pct[i].b<<" "<<pct[i].c<<" "<<pct[j].a<<" "<<pct[j].b<<" "<<pct[j].c;
            ok=1;
        }
    }
    if(ok==0) fout<<-1;
    return 0;
}