Cod sursa(job #2746301)

Utilizator DianaZaharia132nr2Zaharia Diana Cristiana DianaZaharia132nr2 Data 27 aprilie 2021 17:55:36
Problema Loto Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 1.23 kb
//#include<iostream>
#include <fstream>
#include <algorithm>
using namespace std;
ifstream f ("loto.in");
ofstream g ("loto.out");
int N,S,L[100000000],r[101],i,j,k,l,stg,drt,ok=0;
void afis(int stdr)
{
  for (i=1;i<=N;i++)
    for(j=1;j<=N;j++)
      for(k=1;k<=N;k++)
  if (r[i]+r[j]+r[k]==stdr)
    {
        g<<r[i]<<" "<<r[j]<<" "<<r[k]<<" ";
        return;
    }
}
int main()
{
    f>>N>>S;
    for (i=1;i<=N;i++)
    f>>r[i];

    for (i=1;i<=N;i++)
      for (j=1;j<=N;j++)
        for (k=1;k<=N;k++)
    {
      l++;
      L[l]=r[i]+r[j]+r[k];
    } //vector care contine toate sumele posibile din 3 elemente

   // for(i=1;i<=l;i++)
    // cout<<L[i]<<" ";

  //  cout<<endl;

    sort (L+1,L+l+1); //sortam vectorul crescator

    //for(i=1;i<=l;i++)
       // cout<<L[i]<<" ";


    ok=0;
    stg=1; drt=l;
    //alegem 2 sume a cate trei elemente care impreuna dau suma visata de Gigel
    while (ok==0 && stg<=drt)
    {
      if (L[stg]+L[drt]>S)
      drt--;
      else if (L[stg]+L[drt]<S)
      stg++;
      else
      ok=1;
    }

    if (ok==0)//daca nu am gasit scriem -1
    g<<-1;
    else
    {
        afis(L[stg]);
        afis(L[drt]);
    }
    return 0;
    }