Cod sursa(job #1977665)

Utilizator Cristian25Cristian Stanciu Cristian25 Data 5 mai 2017 19:40:14
Problema Numarare triunghiuri Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.56 kb
//~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;
}