Cod sursa(job #1206464)

Utilizator buletevladBulete Vlad buletevlad Data 10 iulie 2014 10:01:08
Problema Numarare triunghiuri Scor 20
Compilator fpc Status done
Runda Arhiva de probleme Marime 1.09 kb
uses crt;

type vector=array[1..800] of integer;

var v:vector;
	f,g:text;
	k,rez,j,x,nr,i,n:integer;
	
procedure sort;                 //sortez vectorul crescator cu ajutorul unei variabile auxiliare
var i,j,aux :		integer;
begin
	for i:=1 to n-1 do 
		for j:=i+1 to n do 
			if v[i] > v[j] then 
				begin
					aux:=v[i];
					v[i]:=v[j];
					v[j]:=aux;
				end;
end;

function caut(x:integer):integer;         //caut numerele din vector cu proprietatea ca v(i-2) + v(i-1) <= v[i]
var pas,lim:longint;
begin
	pas:=1<<9;
	lim:=0;
	while pas<>0 do 
		begin
			if (lim+pas<=n) and (v[lim+pas]<=x) then
					lim:=lim+pas;
			pas:=pas>>1;
		end;
	caut:=lim;
end;

begin
	assign(f,'nrtri.in');
	reset(f);
	assign(g,'nrtri.out');
	rewrite(g);
	read(f,n);
	rez:=0;
	for i:=1 to n do 
		read(f,v[i]);
	sort;
	
	for i:=1 to n-2 do 
		for j:=i+1 to n-1 do 
			begin
				k:=caut(v[i]+v[j]);
				if k>j then rez:=rez+k-j;
			{	writeln('pentru v[',i,'] = ',v[i],' si v[',j,']= ',v[j],' avem k= ',k,' si rez= ',rez);}
			end;
		
	writeln(g,rez);	
	close(g);
	close(f);
end.