Cod sursa(job #891954)
| Utilizator | Data | 25 februarie 2013 21:22:28 | |
|---|---|---|---|
| Problema | Numarare triunghiuri | Scor | 100 |
| Compilator | cpp | Status | done |
| Runda | Arhiva de probleme | Marime | 0.49 kb |
#include<cstdio>
#include<algorithm>
using namespace std;
int n,i,v[801],j,x,rasp,q;
int caut2(int x)
{
int p=0,pas=1<<15;
while(pas!=0)
{
if(p+pas<=n && v[p+pas]<=x)
p+=pas;
pas/=2;
}
return p;
}
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]);
sort(v+1,v+n+1);
for(i=1;i<n-1;i++)
for(j=i+1;j<n;j++)
{
q=caut2(v[i]+v[j]);
rasp+=q-j;
}
printf("%d",rasp);
}