Nu exista pagina, dar poti sa o creezi ...
Cod sursa(job #298762)
| Utilizator | Data | 6 aprilie 2009 12:56:41 | |
|---|---|---|---|
| Problema | Numarare triunghiuri | Scor | 0 |
| Compilator | cpp | Status | done |
| Runda | Arhiva de probleme | Marime | 0.73 kb |
#include<stdio.h>
int n,v[1000];
int i,j,total = 0;
int cauta(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;
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;
}
int main()
{
freopen("nrtri.in","r",stdin);
freopen("nrtri.out","w",stdout);
scanf("%d",&n);
for(i = 1; i <= n; i++)
scanf("%d",&v[i]);
for(i = 1; i <= n; i++)
for(j = 1; j <= n; j++)
total += cauta(1,n)-j;
printf("%d\n",total);
fclose(stdin); fclose(stdout);
return 0;
}
