Pagini recente » Cod sursa (job #397274) | Cod sursa (job #213826) | Cod sursa (job #1079115) | Cod sursa (job #417869) | Cod sursa (job #2035325)
#include <fstream>
#include <algorithm>
std::ifstream fin("nrtri.in");
std::ofstream fout("nrtri.out");
const int MAXN=800;
int v[MAXN+1];
int CautareBinara(int p1, int p2, int n)
{
int st = p2 + 1, dr = n, m, sol = -1;
int x = v[p1] + v[p2];
while (st <= dr)
{
m = (st + dr) / 2;
if (v[m] > x)
dr = m-1;
else
if (v[m] <= x)
{
sol = m;
st = m + 1;
}
}
return sol;
}
int main()
{
int n, cnt = 0, x;
fin >> n;
for(int i = 1; i <= n; ++i)
fin >> v[i];
std::sort (v + 1, v + n + 1);
for (int i = 1; i <= n - 2; ++i)
for (int j = i + 1; j <= n - 1; ++j)
{
x = CautareBinara(i, j, n);
if (x != -1)
cnt += x - j;
}
fout << cnt;
fin.close();
fout.close();
return 0;
}