Pagini recente » Cod sursa (job #2355455) | Cod sursa (job #1294615) | Cod sursa (job #200776) | Cod sursa (job #1326054) | Cod sursa (job #275968)
Cod sursa(job #275968)
#include<fstream>
#include<stdlib.h>
#define N 810
using namespace std;
int n,v[N];
ifstream in ("nrtri.in");
ofstream out ("nrtri.out");
void citire ()
{
in>>n;
for(int i=1;i<=n;i++)
in>>v[i];
}
int compar (const void *p, const void *q)
{
return ( *(int*)p - *(int*)q );
}
void sortare ()
{
qsort(v+1,n,sizeof(v[0]),compar);
}
int cautbin (int x)
{
int mid,st,dr;
st=1;
dr=n;
while(st!=dr)
{
mid=(st+dr)/2;
if(x<=v[mid])
dr=mid;
else
st=mid+1;
}
if(x>=v[st])
return st;
return st-1;
}
void calcul ()
{
long long s=0;
int p;
for(int i=1;i<=n;i++)
{
for(int j=i+1;j<=n;j++)
{
p=cautbin(v[i]+v[j]);//p=ultima pozitie buna
s=s+p-j;
}
}
out<<s;
}
int main ()
{
citire ();
sortare ();
calcul ();
in.close ();
out.close ();
return 0;
}