ENG  RUSTimus Online Judge
Online Judge
Problems
Authors
Online contests
About Online Judge
Frequently asked questions
Site news
Webboard
Links
Problem set
Submit solution
Judge status
Guide
Register
Update your info
Authors ranklist
Current contest
Scheduled contests
Past contests
Rules
back to board

Common Board

help!help!help! problem#1021
Posted by Alexey 5 Aug 2002 17:11
Compilation Error  PROBLEM3 1021
program ViniT;
var
a,b:array[1..10000]of integer;
u,i,j,n,k:integer;
o:boolean;
procedure swap(var a,b:integer);
var t:integer;
begin
t:=a;
a:=b;
b:=t;
end;
procedure qsort(m,l:integer);
var
i,j,k:integer;
begin
k:=a[(m+l)div 2];
i:=m;j:=l;
repeat
    while a[i]<k do inc(i);
    while a[j]>k do dec(j);
    if i<=j then begin  swap(a[i],a[j]);dec(j);inc(i);end;
until i>j;
if m<j then  qsort(m,j);
if l>i then qsort(i,l);
end;

procedure init;
begin
read(n);
for i:=1 to n do read(a[i]);
read(k);
for i:=1 to k do read(b[i]);
qsort(1,n);
end;

function find(m,l:integer):boolean;
var k:integer;
begin
if m=l then find:=u+a[m]=10000 else begin
   k:=(m+l)div 2;
   if u+a[k]<10000 then find:=find(k+1,l)
   else if u+a[k]>10000 then find:=find(m,k-1)
   else find:=true;
end;
end;
procedure solve;
begin
o:=false;
for i:=1 to k do begin
    u:=b[i];
    o:=find(1,n);
    if o then i:=k;
end;
end;
procedure print;
begin
if o then write('YES')else write('NO');
end;
begin
init;
solve;
print;
end.