Cod sursa(job #629039)

Utilizator SmarandaMaria Pandele Smaranda Data 2 noiembrie 2011 16:35:20
Problema Numarare triunghiuri Scor 100
Compilator cpp Status done
Runda gc_practice Marime 0.66 kb
#include<cstdio>
#include<cstdlib>
#include<algorithm>
using namespace std;
long n;
long a[808];
void read()
{
	scanf("%ld",&n);
	for (long i=1;i<=n;i++)
		scanf("%ld",&a[i]);
}

void rez()
{
	long st,dr,m,i,j,s,num=0;
	sort(a+1,a+1+n);
	for (i=1;i<n;i++)
		for (j=i+1;j<n;j++)
		{
			st=j+1;
			dr=n;
			s=a[i]+a[j];
			while(st<=dr)
			{
				m=(st+dr)/2;
				if (a[m]>s)
				{
					dr=m-1;
				}	
				else
					st=m+1;
			}
			if (a[m]<=s)
				num=num+m-j;
			else
				num=num+m-1-j;
			
		}
	printf("%ld\n",num);
}

int main ()
{
	freopen("nrtri.in","r",stdin);
	freopen("nrtri.out","w",stdout);
	
	read();
	rez();
	return 0;
}