Pagini recente » Cod sursa (job #1805842) | Cod sursa (job #993649) | Cod sursa (job #509259) | Cod sursa (job #2153152) | Cod sursa (job #3207814)
#include <iostream>
#include <fstream>
#include <vector>
#include <algorithm>
using namespace std;
int countTriangles(vector<int>& sticks) {
int n = sticks.size();
int count = 0;
sort(sticks.begin(), sticks.end(), greater<int>());
for (int i = 0; i < n - 2; ++i) {
int k = i + 2;
for (int j = i + 1; j < n - 1; ++j) {
while (k < n && sticks[i] < sticks[j] + sticks[k]) {
++k;
}
count += k - j - 1;
}
}
return count;
}
int main() {
ifstream fin("nrtri.in");
ofstream fout("nrtri.out");
int N;
fin >> N;
vector<int> sticks(N);
for (int i = 0; i < N; ++i) {
fin >> sticks[i];
}
int result = countTriangles(sticks);
fout << result << endl;
fin.close();
fout.close();
return 0;
}