Pagini recente » Cod sursa (job #1096704) | Cod sursa (job #2806065) | Cod sursa (job #713915) | Cod sursa (job #2762097) | Cod sursa (job #214763)
Cod sursa(job #214763)
#include <cstdio>
#include <algorithm>
using namespace std;
#define MAX_N 805
#define INF 0x3f3f3f3f
int V[MAX_N], S, Rez;
int N;
int logN;
int b_search ()
{
int i, lg;
for(i = N + 1, lg = logN; lg; lg >>= 1)
if(i - lg > 0 && V[i - lg] > S)
i -= lg;
return i;
}
void citire()
{
scanf("%d\n",&N);
for(int i = 1; i <= N; ++i)
scanf("%d",V+i);
V[N+1] = INF;
}
void solve()
{
for(logN = 1; logN < N + 1; logN <<= 1);
sort(V+1, V+N+1);
for(int i = 1; i < N; ++i)
for(int j = i + 1; j < N; ++j)
{
S = V[i] + V[j];
int nr = b_search();
Rez += (nr - 1 - j);
}
printf("%d\n",Rez);
}
int main()
{
freopen("nrtri.in","rt",stdin);
freopen("nrtri.out","wt",stdout);
citire();
solve();
}