Code
USES crt;
CONST inp='taphop.inp';
outp='taphop.out';
max=100;
TYPE mang=ARRAY[1..max] OF LONGINT;
VAR a,b,c:mang;
n,m,k:LONGINT;
fi,fo:TEXT;
{-----------------------------------------------------}
PROCEDURE nhap;
VAR i,j,h:LONGINT;
BEGIN
assign(fi,inp);
reset(fi);
assign(fo,outp);
rewrite(fo);
n:=0;
m:=0;
WHILE NOT eoln(fi) DO
BEGIN
inc(n);
read(fi,i);
a[n]:=i;
c[n]:=i;
END;
readln(fi);
WHILE NOT eoln(fi) DO
BEGIN
inc(m);
read(fi,j);
b[m]:=j;
END;
h:=0;
k:=n+m;
FOR i:=n+1 TO k DO
BEGIN
inc(h);
c[i]:=b[h];
END;
close(fi);
END;
{----------------------------------------------------}
PROCEDURE quicksort(l,h:LONGINT);
VAR i,j,x,tam:LONGINT;
BEGIN
i:=l;
j:=h;
x:=c[(l+h) DIV 2];
REPEAT
WHILE c[i]<x DO inc(i);
WHILE c[j]>x DO dec(j);
IF i<=j THEN
BEGIN
tam:=c[i];
c[i]:=c[j];
c[j]:=tam;
inc(i);
dec(j);
END;
UNTIL i>j;
IF l<j THEN quicksort(l,j);
IF i<h THEN quicksort(i,h);
END;
{-----------------------------------------------------}
PROCEDURE xuli;
VAR i,j,u:LONGINT;
BEGIN
quicksort(1,k);
FOR i:=1 TO k DO
IF c[i]<>c[i+1] THEN write(fo,c[i],' ');
writeln(fo);
FOR i:=1 TO k DO
IF c[i]=c[i+1] THEN write(fo,c[i],' ');
writeln(fo);
FOR i:=1 TO n DO
BEGIN
u:=0;
FOR j:=1 TO m DO
IF a[i]<>b[j] THEN inc(u);
IF u=m THEN write(fo,a[i],' ');
END;
writeln(fo);
FOR j:=1 TO m DO
BEGIN
u:=0;
FOR i:=1 TO n DO
IF b[j]<>a[i] THEN inc(u);
IF u=n THEN write(fo,b[j],' ');
END;
END;
{----------------------------------------------------}
BEGIN
clrscr;
nhap;
xuli;
close(fo);
END.
Added (29-10-11, 2:55 Am)
---------------------------------------------
TAPHOP.INP
Code
1 2 7 9 13 20 15 //tập hợp A
2 1 3 9 //tập hợp B
TAPHOP.OUT
Code
1 2 3 7 9 13 15 20 //A U B
1 2 9 //A giao B
7 13 20 15 //A\B
3 //B\A