Cod sursa(job #235590)

Utilizator c_e_manuEmanuel Cinca c_e_manu Data 24 decembrie 2008 16:07:59
Problema Numarare triunghiuri Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.02 kb
#include<cstdio>
#include<algorithm>

using namespace std;

int v[801],i,j,n,k,st,dr,mid;

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-2;i++)
                for(j=i+1;j<=n-1;j++)
                {       st=j+1;dr=n;
                        while(st<=dr)
                        {       mid=(st+dr)/2;
                                if(v[mid]<=v[i]+v[j]&&v[mid]>=v[j]-v[i])
                                {       k++;
                                        if(v[mid+1]<=v[i]+v[j]) st=mid+1;
                                        else    dr=mid-1;
                                }
                                else    if(v[mid]>v[i]+v[j]) dr=mid-1;
                                        else    st=mid+1;
                        }
                }
        printf("%d\n",k);
        return 0;
}