VMRR spoj – RR

Nguồn đề bài: http://vn.spoj.com/problems/VMRR/

1. Đề bài VMRR spoj

Có một điều bí mật, mà xưa nay chỉ được lưu truyền giữa các admin VNOI, là RR có những sở thích rất khác người. Không chỉ dừng lại ở việc ngồi ngắm bảng rank của các kỳ thi trên mạng hàng tiếng đồng hồ hay ngồi học thuộc tên của các coder nổi tiếng thế giới, RR còn có sở thích tìm tên mình trong những chuỗi văn bản dài…

Nhiều khi, việc tìm tên mình mất rất nhiều thời gian, thậm chí có thể tốn nhiều ngày mà vẫn đếm nhầm. Các bạn hãy giúp RR giải quyết vấn đề này một cách tổng quát hơn nhé.

Yêu cầu

Cho một xâu S và 2 ký tự X và Y. Đếm xem chuỗi con XY xuất hiện bao nhiêu lần trong S (hai ký tự X và Y không cần liên tiếp nhưng cần xuất hiện đúng thứ tự (X trước Y)).

Input

  • Dòng 1: Xâu S.
  • Dòng 2: X và Y.

Output

  • Gồm 1 số nguyên duy nhất là kết quả của bài toán.

Giới hạn

  • Xâu S chứa không quá 106 ký tự.
  • Tất cả các ký tự trong đề bài có mã ASCII từ 32 đến 255.

Chấm bài

Bài của bạn sẽ được chấm trên thang điểm 100. Điểm mà bạn nhận được sẽ tương ứng với % test mà bạn giải đúng.

Trong quá trình thi, bài của bạn sẽ chỉ được chấm với 2 test ví dụ có trong đề bài.

Khi vòng thi kết thúc, bài của bạn sẽ được chấm với bộ test đầy đủ.

Example

Input 1:
R_R_
RR

Output 1:
1
Input 2:
BA
AB

Output 2:
0

2. Gợi ý VMRR spoj

Gợi ý: bài này các bạn phải sử dụng thuật toán đếm phân phối…

3. code tham khảo VMRR spoj

const   fi='';
var
        f:text;
        S:ansistring;
        x,y:char;
        res,dem:int64;
        i:longint;

begin
        assign(f,fi); reset(f);
        readln(f,s);
        read(f,x,y);
        close(f);
        dem:=0;
        res:=0;
        for i:=1 to length(s) do
                begin
                        if s[i]=y then inc(res,dem);
                        if s[i]=x then inc(dem);
                end;
        writeln(res);
end.

Trả lời

Email của bạn sẽ không được hiển thị công khai. Các trường bắt buộc được đánh dấu *