Pagini recente » Istoria paginii blog/viata-dupa-olimpiade-3 | Cod sursa (job #692574) | Istoria paginii runda/pre104/clasament | Cod sursa (job #2486670) | Cod sursa (job #2074314)
#include <stdio.h>
#include <stdlib.h>
#define L 9
int v[801];
int main()
{
int n;
int i,j,k,pas;
int nrtri = 0;
FILE *f1 = fopen("nrtri.in","r"), *f2 = fopen("nrtri.out","w");
fscanf(f1,"%d",&n);
for(i=1;i<=n;i++)
fscanf(f1,"%d",&v[i]);
nrtri=0;
for(i=1;i<=n-2;i++)
for(j=i+1;j<=n-1;j++){
k=1;
pas=1<<L;
while(pas!=0){
if(k+pas<=n && v[i]+v[j]>=v[k+pas])
k+=pas;
pas>>=1;
}
if(k > j && v[i]+v[j] >= v[k])
nrtri+=k-j;
}
fprintf(f2,"%d",nrtri);
return 0;
}