Cod sursa(job #2438977)

Utilizator TeddyDinutaDinuta Eduard Stefan TeddyDinuta Data 14 iulie 2019 15:12:02
Problema Loto Scor 35
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 1.18 kb
#include <bits/stdc++.h>

using namespace std;
ifstream in("loto.in");
ofstream out("loto.out");
long long n,s,a[110],q,p;
struct loto
{
    long long val,n1,n2,n3;
}v[1000010];
bool cmp(loto a ,loto b)
{
    return a.val<b.val;
}
long long cb(long long s,long long l,long long r)
{
    if(l>r) return 0;
    long long m=(l+r)/2;
    if(v[m].val==s) return m;
    if(s<=v[m].val) return cb(s,l,m-1);
    else return cb(s,m+1,r);
}
int main()
{
     in>>n>>s;
     for(int i=1;i<=n;i++) in>>a[i];
     for(int i=1;i<=n;i++)
        for(int j=1;j<=n;j++)
         for(int k=1;k<=n;k++)
           if(a[i]+a[j]+a[k]<s)
           {
               v[++q].val=a[i]+a[j]+a[k];
               v[q].n1=a[i];
               v[q].n2=a[j];
               v[q].n3=a[k];
           }
     sort(v+1,v+q+1,cmp);
     for(int i=1;i<=n;i++)
        for(int j=1;j<=n;j++)
          for(int k=1;k<=n;k++)
          {
             p=0;
             if(s-a[i]-a[j]-a[k]>=0) p=cb(s-a[i]-a[j]-a[k],1,q);
             if(p) {
              out<<a[i]<<" "<<a[j]<<" "<<a[k]<<" "<<v[p].n1<<" "<<v[p].n2<<" "<<v[p].n3;
              return 0;
             }
          }
     out<<-1;
}