Nguồn đề bài: http://www.spoj.com/PTIT/problems/P146PROC/
1. Đề bài P146PROC spoj
Tí nhờ mẹ đi mua bút màu để chuẩn bị cho giờ vẽ tranh trên lớp. Tí dặn mẹ mua 4 bút màu khác nhau, nhưng mẹ Tí lại quên mất, chỉ nhớ là mua 4 cái bút màu cho Tí.
Về đến nhà, Tí bắt đền mẹ vì đã không mua đủ 4 màu cho Tí. Tí đòi mẹ ra hiệu sách mua thêm, để có đủ 4 màu vẽ cho ngày mai.
Các bạn hãy tính xem mẹ Tí cần mua thêm ít nhất bao nhiêu chiếc bút màu?
Input
Một dòng duy nhất gồm 4 số nguyên s1, s2, s3, s4 (1<= s1, s2, s3, s4 <= 10^9) thể hiện màu của 4 chiếc bút mà mẹ vừa mới mua cho Tí.
Output
In ra số lượng bút màu ít nhất cần mua thêm cho Tí.
Example
Test 1:
Input:
1 7 3 3
Output:
1
Test 2:
Input:
7 7 7 7
Output:
3
2. Code tham khảo P146PROC spoj PTIT
var
        a:array[1..5] of longint;
        i,j:longint;
        dem:longint=0;
procedure sort(l,r: longint);
      var
         i,j,x,y: longint;
      begin
         i:=l;
         j:=r;
         x:=a[(l+r) div 2];
         repeat
           while a[i]<x do
            inc(i);
           while x<a[j] do
            dec(j);
           if not(i>j) then
             begin
                y:=a[i];
                a[i]:=a[j];
                a[j]:=y;
                inc(i);
                j:=j-1;
             end;
         until i>j;
         if l<j then
           sort(l,j);
         if i<r then
           sort(i,r);
      end;
begin
        for i:=1 to 4 do
                read(a[i]);
        a[5]:=0;
        sort(1,4);
        for i:=1 to 4 do
                begin
                        j:=i;
                        while a[j]=a[j+1] do
                                begin
                                        inc(j);
                                        inc(dem);
                                end;
                        if j=4 then break;
                end;
        writeln(dem);
end. 
  
  
  
 