Cod sursa(job #629035)

Utilizator matemariaescuMaria Mateescu matemariaescu Data 2 noiembrie 2011 16:33:13
Problema Numarare triunghiuri Scor 0
Compilator cpp Status done
Runda gc_practice Marime 0.61 kb
# include <cstdio>
# include <algorithm>

using namespace std;

int n, st,dr,mij,i,j,a,b;
int lg[900];
int sol=1;


int main ()
{
	freopen ("nrtri.in","r",stdin);
	freopen ("nrtri.out","w",stdout);
	scanf ("%d",&n);
	for (i=1;i<=n;i++)
	{
		scanf ("%d",&lg[i]);
	}
	sort(lg+1,lg+n+1);
	for (i=1;i<n;i++)
		for (j=i+1;j<n;j++)
		{
			//maximul
			a=lg[i]+lg[j];
			st=j+1; dr=n;
			while (st<dr)
			{
				mij=(st+dr+1)/2;
				if (lg[mij]>a)
					dr=mij-1;
				else st=mij;
			}
			if (st==dr)
			{
				a=dr;
			}
			else a=-1;
			//minimul
			
			if (a!=-1)
			{
				sol+=(a-j);
			}
		}
	printf("%d\n",sol);
	return 0;
}