Pagini recente » Cod sursa (job #698639) | Cod sursa (job #11603) | Cod sursa (job #2715680) | Cod sursa (job #1832475) | Cod sursa (job #810046)
Cod sursa(job #810046)
#include <stdio.h>
int v[800],n;
void sortare(int n){
int pmin,aux,i,j;
for(i=0;i<n;i++){
pmin=i;
for(j=i+1;j<n;j++)
if(v[j]<v[pmin])
pmin=j;
if(pmin!=i){
aux=v[i];
v[i]=v[pmin];
v[pmin]=aux;
}
}
}
int caut(int x)
{
//caut binar cel mai mare i cu proprietatea ca v[i]<=x
int i=0,pas;
pas=1<<9;
while(pas!=0){
if((i+pas<n)&&(v[i+pas]<=x))
i+=pas;
pas/=2;
}
return i;
}
int main(){
int i,j,pas,k,s;
FILE *fin,*fout;
fin=fopen("nrtri.in","r");
fout=fopen("nrtri.out","w");
fscanf(fin,"%d",&n);
if(n==1||n==2)
fprintf(fout,"0");
else {
for(i=0;i<n;i++)
fscanf(fin,"%d",&v[i]);
sortare(n);
s=0;
for(i=0;i<n-2;i++){
for(j=i+1;j<n-1;j++){
k = caut(v[i]+v[j]);
if(k>j) s+=k-j;
}
}
fprintf(fout,"%d",s);
}
return 0;
}