Pagini recente » Cod sursa (job #832251) | Cod sursa (job #1387088) | Cod sursa (job #1704256) | Cod sursa (job #732957) | Cod sursa (job #2035327)
#include <iostream>
#include <fstream>
#include <algorithm>
using namespace std;
ifstream fin("nrtri.in");
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];
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;
return 0;
}