Cod sursa(job #2405148)

Utilizator DanutAldeaDanut Aldea DanutAldea Data 13 aprilie 2019 23:32:23
Problema Loto Scor 95
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 1.09 kb
#include <fstream>
#include <algorithm>
using namespace std;

ifstream fin("loto.in");
ofstream fout("loto.out");

long long n,i,j,k,a[101],cnt,st,dr,mid,s;

struct sum{
    long long s;
    long long x;
    long long y;
    long long z;
} v[1000001];

bool cmp(const sum &a, const sum &b){
    return a.s<b.s;
}

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

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

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

    for(i=1;i<cnt;i++){
        st=i+1; dr=cnt;

        while(st<=dr){
            mid=(st+dr)/2;

            if(v[i].s+v[mid].s==s){
                fout<<v[i].x<<" "<<v[i].y<<" "<<v[i].z<<" "<<v[mid].x<<" "<<v[mid].y<<" "<<v[mid].z;
                return 0;
            }

            if(v[i].s+v[mid].s<s)
                st=mid+1;
            else
                dr=mid-1;
        }
    }

    fout<<-1;

    return 0;
}