Pagini recente » Cod sursa (job #364294) | Cod sursa (job #1646668) | Cod sursa (job #2685886) | Cod sursa (job #2576422) | Cod sursa (job #523648)
Cod sursa(job #523648)
#include <fstream>
#include <iostream>
using namespace std;
int x[802], n, k;
int bin_search(int i, int j)
{
int st = j + 1, dr = n;
while(st <= dr)
{
int m = (st + dr) / 2;
if ((x[i] + x[j] >= x[m] && x[m + 1] > x[i] + x[j]) || (x[m] <= x[i] + x[j] && m == n))
return m;
else if(x[i] + x[j] >= x[m] && x[m + 1] <= x[i] + x[j])
st = m + 1;
else dr = m - 1;
}
return 0;
}
int main()
{
ifstream f("nrtri.in");
ofstream g("nrtri.out");
f >> n;
for(int i = 1; i <= n; ++i)
f >> x[i];
sort(x + 1, x + n + 1);
for(int i = 1; i < n; ++i)
for(int j = i + 1; j <= n; ++j)
{
int b = bin_search(i, j);
if(b)
k = k + (b - j);
}
g << k;
f.close();
g.close();
return 0;
}