Cod sursa(job #2577242)

Utilizator raresAlex95Rares Stan raresAlex95 Data 8 martie 2020 19:07:52
Problema Numarare triunghiuri Scor 70
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.88 kb
#include <iostream>
#include <fstream>
#include <vector>

using namespace std;

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

int n, total = 0, comb = 3;
vector<int> lgs;
vector<int> sol(3);

bool isTriangle(int l1, int l2, int l3)
{
  double semiP = (l1 + l2 + l3) / 2;
  if (semiP < l1 || semiP < l2 || semiP < l3)
  {
    return false;
  }

  return true;
}

void constructTriangles(int latNr, int triedUpon)
{
  if (latNr == comb)
  {
    if (isTriangle(sol[0], sol[1], sol[2]))
    {
      total++;
    }
    return;
  }

  for (int i = triedUpon + 1; i < n - (comb - latNr - 1); i++)
  {
    sol[latNr] = lgs[i];
    constructTriangles(latNr + 1, i);
  }
}

int main()
{
  int aux;
  in >> n;
  for (int i = 0; i < n; i++)
  {
    in >> aux;
    lgs.push_back(aux);
  }

  constructTriangles(0, -1);

  out << total;

  return 0;
}