| ||||||||||
| Online Judge | Problem Set | Authors | Online Contests | User | ||||||
|---|---|---|---|---|---|---|---|---|---|---|
| Web Board Home Page F.A.Qs Statistical Charts | Current Contest Past Contests Scheduled Contests Award Contest | |||||||||
PASCAL 1ACvar
t,n,m,k,jj:longint;
s:int64;
a:array[0..1000010,1..2]of longint;
c:array[1..1010]of longint;
mark:array[1..1010]of boolean;
procedure qsort(l,r:longint);
var
i,j,k1,k2:longint;
begin
if l>=r then exit;
i:=l;
j:=r;
k1:=a[(i+j) div 2,1];
k2:=a[(i+j) div 2,2];
while i<=j do
begin
while (a[i,2]>k2)or((a[i,2]=k2)and(a[i,1]>k1)) do inc(i);
while (a[j,2]<k2)or((a[j,2]=k2)and(a[j,1]<k1)) do dec(j);
if i<=j then
begin
a[0]:=a[i];
a[i]:=a[j];
a[j]:=a[0];
inc(i);
dec(j);
end;
end;
qsort(l,j);
qsort(i,r);
end;
function find(i:longint):longint;
begin
find:=0;
while i>0 do
begin
find:=find+c[i];
i:=i-i and -i;
end;
end;
procedure add(i:longint);
begin
while i<=n do
begin
inc(c[i]);
i:=i+i and -i;
end;
end;
procedure main;
var
i,j,o:longint;
begin
qsort(1,k);
for i:=1 to k do
begin
o:=find(a[i,1]-1);
s:=s+o;
add(a[i,1]);
end;
end;
procedure print;
begin
write('Test case ');
write(jj);
write(': ');
write(s);
writeln;
end;
procedure init;
var
i:longint;
begin
readln(t);
for jj:=1 to t do
begin
s:=0;
fillchar(a,sizeof(a),0);
fillchar(c,sizeof(c),0);
fillchar(mark,sizeof(mark),0);
readln(n,m,k);
for i:=1 to k do read(a[i,1],a[i,2]);
main;
print;
end;
end;
begin
init;
end.
Followed by: Post your reply here: |
All Rights Reserved 2003-2013 Ying Fuchen,Xu Pengcheng,Xie Di
Any problem, Please Contact Administrator