Pagini recente » Cod sursa (job #1317124) | Cod sursa (job #753467) | Cod sursa (job #83231) | Cod sursa (job #1906006) | Cod sursa (job #1134203)
#include <iostream>
#include <fstream>
#include <vector>
#include <algorithm>
using namespace std;
int n;
int Bsearch(int st,int dr,vector<int>v,int c)
{
if (c>v.back())
return n - 1;
while ( st <= dr )
{
int m=st+(dr-st)/2;
if(v[m]==c)
{
while(v[m+1]==v[m])
m ++;
return m;
}
if(v[m]>c)
dr=m-1;
else
st=m+1;
}
return st - 1;
}
int main()
{
ifstream f("nrtri.in");
ofstream g("nrtri.out");
int i,aux,j,nrtri=0;
vector <int> v;
f>>n;
for(i=0;i<n;i++ )
{
f >> aux;
v.push_back(aux);
}
sort(v.begin(),v.end());
for (i=0;i<n-2;i++ )
for ( j=i+1;j<n-1;j++ )
{
aux=Bsearch(j,n-1,v,v[i]+v[j]);
nrtri+=(aux-j);
}
g<<nrtri;
return 0;
}