Cod sursa(job #531441)

Utilizator raul1520Raul Andrei raul1520 Data 9 februarie 2011 18:04:52
Problema Numarare triunghiuri Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.65 kb
#include <stdio.h>
#include <algorithm>
using namespace std;
int n,x[805],i,j,k,mij,st,dr,a;
bool cmp(int a,int b)
{
    return a>=b;
}
int main()
{
	freopen("nrtri.in","r",stdin);
	freopen("nrtri.out","w",stdout);
	scanf("%d",&n);
	for(i=0;i<n;i++)
	{
		scanf("%d",&k);
		x[i]=k;
	}
	sort(x,x+n,cmp);
	k=0;
	for(i=0;i<n-2;i++)
	{
		for(j=i+1;j<n-1;j++)
		{
			a=x[i]+x[j];
			st=j+1;
			dr=n-1;
			while(st<=dr)
			{
				mij=(st+dr)/2;
				if(x[mij]<=a && x[i]<=x[j]+x[mij] && x[j]<=x[i]+x[mij])
				{
					k=k+mij;
					st=mij+1;
				}
				else
				{
					dr=mij-1;
				}
			}
		}
	}
	printf("%d",k);
	return 0;
}