Cod sursa(job #2508882)

Utilizator sygAndreiIonitaIonita Andrei sygAndreiIonita Data 13 decembrie 2019 11:47:42
Problema Loto Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 1.21 kb
#include <fstream>
#include <algorithm>

using namespace std;

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

struct smecherie
{
  int sum,a,b,c;
};

int v[101];
smecherie triple[1000001];

bool cmp (smecherie a,smecherie b)
{
  return (a.sum<b.sum);
}

int main()
{
    int n,i,j,k,cnt=0,S,cautat;
    in>>n>>S;
    for (i=1;i<=n;i++)
        in>>v[i];
    for (i=1;i<=n;i++)
      for (j=i;j<=n;j++)
        for (k=j;k<=n;k++)
      {
        cnt++;
        triple[cnt].sum=v[i]+v[j]+v[k];
        triple[cnt].a=v[i];
        triple[cnt].b=v[j];
        triple[cnt].c=v[k];
      }
    sort(triple+1,triple+cnt+1,cmp);
    for (i=1;i<=cnt;i++)
    {
      cautat=S-triple[i].sum;
      int l=1,r=cnt,mid,sol=0;
      while (l<=r)
      {
        mid=(l+r)/2;
        if (triple[mid].sum==cautat)
        {
          sol=mid;
          break;
        }
        else if (triple[mid].sum<cautat)
            l=mid+1;
        else
            r=mid-1;
      }
      if (sol)
      {
        out<<triple[i].a<<" "<<triple[i].b<<" "<<triple[i].c<<" "<<triple[sol].a<<" "<<triple[sol].b<<" "<<triple[sol].c;
        return 0;
      }
    }
    out<<-1;
    return 0;
}