Informatică, întrebare adresată de dianadp, 9 ani în urmă

Se dau n numere naturale distincte. Determinaţi câte triunghiuri distincte pot avea lungimile laturilor printre aceste numere.


artur99: ai poate vreun exemplu?
artur99: pt date de intrare/iesire?
dianadp: intrare:5
3 5 10 7 6
dianadp: iesire: 7
artur99: ok, mersi

Răspunsuri la întrebare

Răspuns de artur99
10
#include <iostream>
#include <algorithm>
using namespace std;

int main(){
    int n,c=0,i,j,k;
    cin>>n;int v[n];
    for(i=0;i<n;i++)cin>>v[i];
sort(v, v+n);

for (i = 0; i < n-2; ++i){
k = i+2;
for (j = i+1; j < n; ++j){
while (k < n && v[i] + v[j] > v[k])
++k;
c += k - j - 1;
}
}
cout<<c;
}

artur99: hai pe pm
artur99: sa iti dau oficiala daca vrei
artur99: :)
artur99: mai esti on?
dianadp: da
artur99: a mers?
AntiEaglesDavids: +1 pt varu ( Dianadp : 'pbinfo' , Artur : 'pff' ) :)))))
artur99: :))))))
artur99: thx vere
AntiEaglesDavids: :)))))
Răspuns de AntiEaglesDavids
4
Acelasi lucru, ca si varul :) Poate te ajuta la ceva

#include <iostream>
#include <algorithm>
using namespace std;
const int NMAX = 100000;

int v[NMAX], n, nr;

int main()
{
    cin >> n;
    for(int i=1; i<=n; i++) cin >> v[i];
    sort(v + 1, v + n + 1);

    for(int i=1; i<=n-2; i++)
        for(int j=i+1; j<=n-1; j++)
            for(int k=j+1; k<=n; k++)
                if(v[i] + v[j] > v[k])
                    nr++;

    cout << nr << '\n';
    return 0;
}

Alte întrebări interesante