Cod sursa(job #805170)

Utilizator avaspataruAva Spataru avaspataru Data 30 octombrie 2012 22:40:35
Problema Numarare triunghiuri Scor 50
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.66 kb
#include<stdio.h>
#include<algorithm>
using namespace std;
int cate,i,j,pas,ii,jj,k,n,v[1005];
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);
cate=0;
for(i=1;i<=n-2;i++)
    for(j=i+1;j<=n-1;j++)
        {
        pas=1<<29;
        jj=0;
        while(pas!=0)
            {if(jj+pas<=n&&v[jj+pas]<(v[i]+v[j]))
                jj+=pas;
            pas/=2;
            }
        for(k=j+1;k<=jj+1;k++)
            if(v[k]+v[i]>=v[j]&&v[j]+v[k]>=v[i]&&v[i]+v[j]>=v[k])
                cate++;
        }
printf("%d",cate);
return 0;
}