Cod sursa(job #2686892)
Utilizator | Dragomir Teodor Teo.D5 | Data | 19 decembrie 2020 13:54:23 |
---|---|---|---|
Problema | Numarare triunghiuri | Scor | 45 |
Compilator | cpp-64 | Status | done |
Runda | Arhiva de probleme | Marime | 1.04 kb |
#include <fstream>
#include <algorithm>
using namespace std;
ifstream fin("nrtri.in");
ofstream fout("nrtri.out");
int v[802];
int main()
{
int a, b, n, st, dr, med, rasp1, rasp2, sol=0;
fin>>n;
for(int i=1; i<=n; i++)
fin>>v[i];
sort(&v[1], &v[n+1]);
for(int i=1; i<=n; i++)
{
a=v[i];
for(int j=i+1; j<=n; j++)
{
b=v[j];
rasp1=0;
rasp2=0;
st=1;
dr=n;
while(st<=dr)
{
med=(st+dr)/2;
if(v[med]>b)
{
rasp1=med;
dr=med-1;
}
else
st=med+1;
}
st=1;
dr=n;
while(st<=dr)
{
med=(st+dr)/2;
if(v[med]<=(b+a))
{
rasp2=med;
st=med+1;
}
else
dr=med-1;
}
if(rasp1!=0) sol+=rasp2-rasp1+1;
}
}
fout<<sol<<'\n';
return 0;
}