Pagini recente » Cod sursa (job #2830024) | Cod sursa (job #2209755) | Cod sursa (job #2175026) | Cod sursa (job #492213) | Cod sursa (job #1977666)
//~Numarare triunghiuri~ (http://www.infoarena.ro/problema/nrtri)
//*Andrei are N betisoare de lungimi nu neaparat diferite. El vrea sa afle in cate moduri poate alege trei betisoare astfel incat sa poata forma cu ele un triunghi.
//-Cerinta
//*Dandu-se lungimile betisoarelor aflati in cate moduri se pot alege trei dintre ele astfel incat sa se poata forma un triunghi cu ele.
//-Date de Intrare
//*Pe prima linie a fisierului nrtri.in se afla N, numarul de betisoare. Pe urmatoarea linie se afla N numere separate prin spatii ce reprezinta lungimile betisoarelor.
//-Date de Iesire
//*Fisierul nrtri.out contine un singur numar ce reprezinta numarul cerut de problema.
//-Restrictii si precizari
//*1 ≤ N ≤ 800
//*1 ≤ lungimea unui betisor ≤ 30000
//*se considera triunghiuri si cele care au un unghi de 180 de grade si celelalte doua de 0 grade (2 segmente coliniare se confunda cu al 3-lea)
//*pentru 75 de puncte se garanteaza 1 ≤ N ≤ 150
#include <iostream>
#include<fstream>
using namespace std;
int triunghi(int a[],int n)
{
int i,j,k,nr=0;
for(i=1;i<=n;i++)
for(j=i+1;j<=n;j++)
for(k=j+1;k<=n;k++)
if(i!=j && i!=k && k!=j)
{
if(a[i]<=a[j]+a[k] && a[j]<=a[i]+a[k] && a[k]<=a[i]+a[j])
nr++;
}
return nr;
}
int main()
{
ifstream f("nrtri.in");
ofstream g("nrtri.out");
int N,a[200];
f>>N;
for(int i=1;i<=N;i++)
f>>a[i];
g<<triunghi(a,N)<<'\n';
f.close();
g.close();
return 0;
}