Mai intai trebuie sa te autentifici.
Cod sursa(job #1522897)
Utilizator | Data | 12 noiembrie 2015 03:08:34 | |
---|---|---|---|
Problema | Numarare triunghiuri | Scor | 0 |
Compilator | cpp | Status | done |
Runda | Arhiva de probleme | Marime | 0.95 kb |
#include <fstream>
#include <algorithm>
using namespace std;
ifstream f("nrtri.in");
ofstream g("nrtri.out");
int v[810];
int maxim(int a,int b)
{
if(a>b)
return a;
return b;
}
int cautbin(int st,int dr,int x)
{
int mij=(st+dr)/2;
if(st==dr)
return st;
if(x>v[mij])
return cautbin(mij+1,dr,x);
else
return cautbin(st,mij,x);
}
int cautbin2(int st,int dr,int x)
{
int mij=(st+dr)/2;
if(st==dr)
return st;
if(x>=v[mij])
return cautbin2(mij+1,dr,x);
else
return cautbin2(st,mij,x);
}
int main()
{
int a,b,n,i,j,s=0;
f>>n;
for(i=1;i<=n;i++)
f>>v[i];
sort(v+1,v+n+1);
for(i=1;i<n-1;i++)
{
for(j=i+1;j<n;j++)
{
a=cautbin(j+1,n,v[i]+v[j]);
b=cautbin2(j+1,n,maxim(v[i]-v[j],v[j]-v[i]));
s+=a-b+1;
}
}
g<<s<<'\n';
return 0;
}