Pagini recente » Cod sursa (job #537054) | Cod sursa (job #994028) | Cod sursa (job #2592866) | Cod sursa (job #2443864) | Cod sursa (job #62864)
Cod sursa(job #62864)
Program NumarareTriunghiuri;
const fin = 'nrtri.in';
fout = 'nrtri.out';
var n: word;
b: array[1..800] of word;
c: array[0..61000] of word;
ANS: longint;
procedure load;
var f: text; i: word;
begin
assign(f, fin); reset(f);
fillchar(c, sizeof(c), 0);
readln(f, n);
for i:=1 to n do
begin
read(f, b[i]);
inc(c[b[i]]);
end;
close(f);
end;
function max(a,b: longint): longint;
begin
if a>b then max:=a else max:=b;
end;
var i, temp: word;
procedure sort;
procedure qs(l,r: word);
var k: word;
begin
if l>=r then exit;
k:=l;
for i:=l+1 to r do
begin
if b[i]<b[l] then begin
inc(k);
temp:=b[i];
b[i]:=b[k];
b[k]:=temp;
end;
end;
temp:=b[l];
b[l]:=b[k];
b[k]:=temp;
qs(l, k-1);
qs(k+1, r);
end;
begin
qs(1,n);
end;
procedure solve;
var i,j: word;
begin
for i:=2 to 60000 do
c[i]:=c[i]+c[i-1];
ANS:=0;
for i:=1 to n-1 do
for j:=i+1 to n do
begin
ANS:=ANS+c[ b[i]+b[j] ] - c[ max(b[i],b[j])-1]-1;
if b[i]=b[j] then dec(ANS);
end;
end;
procedure save;
var f: text;
begin
assign(f, fout); rewrite(f);
write(f, ANS);
close(f);
end;
begin
load;
sort;
for i:=1 to n do
write(b[i], ' ');
solve;
save;
end.