Pagini recente » Cod sursa (job #2051487) | Cod sursa (job #2921049) | Cod sursa (job #1773245) | Cod sursa (job #3236871) | Cod sursa (job #1669799)
#include <iostream>
#include <fstream>
#include <vector>
#include <algorithm>
using namespace std;
int binarySearch(int lo, int hi, int key, vector<int> values) {
int mid;
while (lo <= hi) {
mid = lo + (hi - lo) / 2;
if (values[mid] == key) {
return mid;
} else if (values[mid] < key) {
lo = mid + 1;
} else {
hi = mid - 1;
}
}
return -1;
}
int main()
{
ifstream f("nrtri.in");
ofstream g("nrtri.out");
int n;
f>>n;
int limit = n;
vector<int> lengths;
while (n) {
int length;
f>>length;
lengths.push_back(length);
n--;
}
sort(lengths.begin(), lengths.end());
int possibleTr = 0;
for (int i = 0; i < limit; ++i) {
for (int j = i + 1; j < limit; ++j) {
int sum = lengths[i] + lengths[j];
for (int k = sum; k > 0; --k ) {
int pos = binarySearch(j+1, limit, k, lengths);
if (pos != -1) {
if (lengths[i] + lengths[pos] >= lengths[j] && lengths[j] + lengths[pos] >= lengths[i]){
possibleTr++;
}
}
}
}
}
g<<possibleTr;
f.close();
g.close();
}