Cod sursa(job #1116844)
| Utilizator | Data | 22 februarie 2014 20:55:58 | |
|---|---|---|---|
| Problema | Numarare triunghiuri | Scor | 0 |
| Compilator | cpp | Status | done |
| Runda | Arhiva de probleme | Marime | 0.63 kb |
#include<cstdio>
#include<algorithm>
using namespace std;
int a[1001],i,n,j,nr;
int main()
{
freopen("nrtri.in","r",stdin);
freopen("nrtri.out","w",stdout);
scanf("%d",&n);
for (i=1;i<=n;++i) scanf("%d",&a[i]);
sort(a+1,a+n+1);
a[++n]=30005;
for (i=1;i<=n-3;++i)
{
int poz=1;
for (j=i+1;j<n-1;++j)
{
int sum=a[i]+a[j];
int *p=upper_bound(a+poz,a+n+1,sum);
if (p-a!=poz)
{
poz=p-a;
nr=nr+(p-a-2-i);
}
}
}
printf("%d\n",nr);
return 0;
}
