Pagini recente » Cod sursa (job #808046) | Cod sursa (job #2313285) | Cod sursa (job #1285391) | Cod sursa (job #3242785) | Cod sursa (job #1521728)
#include <fstream>
#include <algorithm>
const int NMAX = 1000;
using namespace std;
ifstream f("nrtri.in");
ofstream g("nrtri.out");
int N;
int v[NMAX];
int ans;
int x;
int cautare(int v[], int ls, int ld, int val)
{
int mid;
int pos = 0;
while(ls <= ld)
{
mid = (ls + ld) / 2;
if (v[mid] <= val)
{
pos = mid;
ls = mid + 1;
}
else
{
ld = mid - 1;
}
}
return pos;
}
int main()
{
f >> N;
for (int i = 1; i <= N; ++i)
{
f >> v[i];
}
sort(v+1,v+N+1);
for (int i = 1; i <= N; ++i)
{
for (int j = i + 1; j <= N; ++j)
{
x = cautare(v,j+1,N,v[i]+v[j]);
if (x)
{
ans += (x-j);
x = 0;
}
}
}
g << ans << '\n';
return 0;
}