Pagini recente » Cod sursa (job #2807517) | Cod sursa (job #1630163) | Cod sursa (job #1895285) | Cod sursa (job #876058) | Cod sursa (job #210599)
Cod sursa(job #210599)
#include<stdio.h>
#define N 807
int n,v[N],i,j,nr;
int cautare(int p, int u){
int m;
m=(p+u)/2;
while(p<=u){
if((v[m]<=v[i]+v[j]&&v[m+1]>v[i]+v[j])||(v[m]<=v[i]+v[j]&&m==n-1))
return m-j;
else
if(v[m]<=v[i]+v[j] && v[m+1]<=v[i]+v[j]){
p=m+1;
m=(p+u)/2;
}
else{
u=m-1;
m=(p+u)/2;
}
}
return 0;
}
void sort(){
int x,min;
for(i=0;i<n-1;++i){
min=i;
for(j=i+1;j<n;++j)
if(v[j]<v[min])
min=j;
if(min!=i){
x=v[min];
v[min]=v[i];
v[i]=x;
}
}
}
int main(){
freopen("nrtri.in","r",stdin);
freopen("nrtri.out","w",stdout);
scanf("%d",&n);
for(i=0;i<n;++i)
scanf("%d",&v[i]);
sort();
for(i=0;i<n-2;++i)
for(j=i+1;j<n-1;++j)
nr+=cautare(1,n);
printf("%d\n",nr);
fclose(stdin);
fclose(stdout);
return 0;
}