Cod sursa(job #629084)

Utilizator andreea29Iorga Andreea andreea29 Data 2 noiembrie 2011 17:10:09
Problema Numarare triunghiuri Scor 0
Compilator cpp Status done
Runda gc_practice Marime 0.6 kb
#include<fstream>
#include<cstdlib>
#include<algorithm>
using namespace std;

fstream f("nrtri.in");
ofstream h("nrtri.out");
	
long n, i;
long a[808];
void read()
{
	f>>n;
	for (i=1; i<=n; i++)
		f>>a[i];
}

void rez()
{
	long st,dr,m,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;
			
		}
	h<<num;
}

int main ()
{
	
	read();
	rez();
	f.close();
	h.close();
	return 0;
}