Pagini recente » Istoria paginii implica-te/extinde-arhiva/autor-necunoscut | Cod sursa (job #1845177) | Cod sursa (job #2725679) | Cod sursa (job #2580248) | Cod sursa (job #2270811)
#include <fstream>
#include <stdio.h>
using namespace std;
FILE *fin=fopen("nrtri.in","r");
ofstream fout("nrtri.out");
int n,m,i,x,st,dr,poz,j,v[802],start,ultimul;
long long mid,suma,sol;
short q;
int main()
{
fscanf(fin,"%d",&n);
for(i=1; i<=n; i++)
fscanf(fin,"%d",&v[i]);
for(i=1; i<n; i++)
for(j=i+1; j<=n; j++)
if(v[j]<v[i])
swap(v[i],v[j]);
for(i=1; i<n-1; i++)
for(j=i+1; j<n; j++)
{
suma=v[i]+v[j];
start=j+1;
if(v[i]==v[j] && v[j]==v[j+1])
{ ///cautam primul elem diferit de v[j];
st=j+1;
dr=n;
while(st<=dr)
{
mid=(st+dr)/2;
if(v[mid]==v[j])
{
start=mid;
st=mid+1;
}
else dr=mid-1;
}
}
///cautam ultimul elem cu propr c<=a+b
st=j+1;dr=n;
while(st<=dr)
{
mid=(st+dr)/2;
if(v[mid]>suma)
dr=mid-1;
else{
st=mid+1;
ultimul=mid;
}
}
sol+=ultimul-start+1;
}
fout<<sol;
return 0;
}