Pagini recente » Diferente pentru implica-te/arhiva-educationala intre reviziile 223 si 83 | Cod sursa (job #229563) | Cod sursa (job #240134) | Cod sursa (job #1623806) | Cod sursa (job #2486346)
#include <fstream>
#include <algorithm>
using namespace std;
int v[1000001],n;
ifstream fin("nrtri.in");
ofstream fout("nrtri.out");
int cbdr(int x)
{
int st=1,dr=n,last=0;
while(st<=dr)
{
int mid=(st+dr)/2;
if(v[mid]<=x)
{
last=mid;
st=mid+1;
}
else
dr=mid-1;
}
return last;
}
int main(){
fin>>n;
for(int i=1;i<=n;i++)
fin>>v[i];
int s=0;
sort(v+1,v+n+1);
for(int i=1;i<n;i++)
for(int e=i+1;e<=n;e++) {
int b=cbdr(v[e]+v[i]), a=cbdr(v[e]-v[i]-1);
s+=b-a;
if (i > a && i <= b)
--s;
if (e > a && e <= b)
--s;
}
fout<<s/3;
}