Pagini recente » Cod sursa (job #1455478) | Cod sursa (job #689546) | Borderou de evaluare (job #1047350) | Cod sursa (job #1840239) | Cod sursa (job #715360)
Cod sursa(job #715360)
#include <fstream>
#include <algorithm>
#include <cmath>
using namespace std;
int n, a[805];
long long sol;
void Read()
{
ifstream f("nrtri.in");
f>>n;
int i;
for (i=1; i<=n; i++)
f>>a[i];
f.close();
}
int cautare(int x)
{
int st = 1, dr = n, m;
while (st<=dr)
{
m = (st+dr)/2;
if (a[m]<=x && (a[m+1] > x || m == n-1))
return m;
else
{
if (a[m]<=x && a[m+1] <= x)
{
st = m+1;
}
else
dr = m-1;
}
}
return 0;
}
void Solve()
{
int i, j, poz;
sort(a+1, a+n+1);
for (i=1; i<=n-1; i++)
{
for (j=i+1; j<=n; j++)
{
poz = cautare(a[i] + a[j]);
if (poz && poz!=i && poz!=j && a[i]+a[j] >= a[poz] && a[i] + a[poz] >= a[j] && a[j] + a[poz] >= a[i])
sol++;
}
}
}
void Write()
{
ofstream g("nrtri.out");
g<<sol<<"\n";
g.close();
}
int main()
{
Read();
Solve();
Write();
return 0;
}