Thứ Sáu, 13 tháng 5, 2022

SIM PASCAL

var a,b:ansistring;
    m,n:longint;
    s:array[0..2000111,0..30] of longint;

procedure enter;
begin
    readln(a);
    readln(b);
    m:=length(a);n:=length(b);
end;

function max(x,y:longint):longint;
begin
    if x>y then exit(x) 
    else exit(y);
end;

function min(x,y:longint):longint;
begin
    if x<y then exit(x) 
    else exit(y);
end;

procedure solve;
var i,j,u,v,c:longint;
    res:int64;
begin
    //chuan bi mang cong don
    for i:=1 to m do
    begin
        for j:=0 to 25 do s[i,j]:=s[i-1,j];
        inc(s[i,ord(a[i])-ord('a')]);
    end;
    //tinh ket qua
    res:=0;
    //bien u va v la doan ki tu o xau a
    //duoc so sanh voi ki tu b[i]
    for i:=1 to n do
    begin
        u:=max(1,i+m-n);
        v:=min(i,m);
        c:=ord(b[i])-ord('a');
        inc(res,s[v,c]-s[u-1,c]);
    end;
    writeln(res);
end;

begin
    assign(input,'sim.inp');reset(input);
    assign(output,'sim.out');rewrite(output);
    enter;
    solve;
    close(input);close(output);
end.

Không có nhận xét nào:

Đăng nhận xét

Lưu ý: Chỉ thành viên của blog này mới được đăng nhận xét.