Pagini recente » Borderou de evaluare (job #1236699) | Cod sursa (job #59693) | Cod sursa (job #2499326) | Cod sursa (job #1713738) | Cod sursa (job #1470849)
#include <iostream>
#include <fstream>
#include <algorithm>
using namespace std;
int n, v[802];
int caut(int x,int ls) {
int lo, hi, m;
lo = ls;
hi = n;
while (hi - lo > 1){
m = (lo + hi) / 2;
if (v[m] <= x)
lo = m;
else
hi = m;
}
return lo;
}
int main() {
ifstream f("nrtri.in");
ofstream g("nrtri.out");
int i, j, k, s = 0;
f >> n;
for (i = 0; i < n; ++i)
f >> v[i];
sort(v, v + n);
for (i = 0; i < n-2; ++i) {
for (j = i + 1; j < n - 1; ++j) {
if (v[i] + v[j] < v[j + 1])
continue;
k = caut(v[i] + v[j], j + 1);
s += k - j;
}
}
g << s;
f.close();
g.close();
return 0;
}