Tìm VIKA

Xem PDF



Tác giả:
Dạng bài
Điểm: 777 Thời gian: 1.0s Bộ nhớ: 256M Input: bàn phím Output: màn hình

Cho một mảng 2 chiều gồm các chữ cái thường có kích thước gồm: \(n\) hàng và \(m\) cột. Nhiệm vụ của bạn là chọn 4 cột khác nhau theo thứ tự từ trái sang phải sao cho cột thứ nhất chứa từ 'v', cột thứ hai chứa từ 'i', cột thứ ba chứa tứ 'k' và cột thứ tư chứa từ 'a'.

Nếu bạn có thể thực hiện được nhiệm vụ trên thì hãy in ra màn hình từ "YES", ngược lại in ra "NO" nhé

Input

  • Dòng đầu tiên chứa số nguyên dương \(t(1\le t\le 100)\) - Thể hiện số testcase
  • \(t\) block tiếp theo, mỗi block có dạng như sau:
    ++ Dòng thứ nhất chứa hai số nguyên dương \(n,m(1\le n,m\le 20)\) - Thể hiện kích thước của mảng 2 chiều
    ++ \(n\) dòng tiếp theo, mỗi dòng chứa \(m\) kí tự viết liền nhau

Output

  • Ứng với mỗi testcase, hãy in kết quả ra màn hình.

Example

Test 1

Input
3
3 3
abc
def
gik
1 4
vika
2 5
volin
aikae
Output
NO
YES
YES

Bình luận


  • 0
    doanngocgiahung2013    9:51 p.m. 24 Tháng 7, 2024
    pascal
    program FindColumns;
    
    const
      MAX_N = 20;
      MAX_M = 20;
    
    var
      t, n, m, i, j: Integer;
      grid: array[1..MAX_N, 1..MAX_M] of Char;
      v_col, i_col, k_col, a_col: array[1..MAX_M] of Integer;
      v_count, i_count, k_count, a_count: Integer;
      found: Boolean;
    
    procedure FindColumnsInGrid;
    var
      i, j: Integer;
      has_v, has_i, has_k, has_a: Boolean;
    begin
      v_count := 0;
      i_count := 0;
      k_count := 0;
      a_count := 0;
    
      for j := 1 to m do
      begin
        has_v := False;
        has_i := False;
        has_k := False;
        has_a := False;
    
        for i := 1 to n do
        begin
          if grid[i, j] = 'v' then has_v := True;
          if grid[i, j] = 'i' then has_i := True;
          if grid[i, j] = 'k' then has_k := True;
          if grid[i, j] = 'a' then has_a := True;
        end;
    
        if has_v then
        begin
          Inc(v_count);
          v_col[v_count] := j;
        end;
    
        if has_i then
        begin
          Inc(i_count);
          i_col[i_count] := j;
        end;
    
        if has_k then
        begin
          Inc(k_count);
          k_col[k_count] := j;
        end;
    
        if has_a then
        begin
          Inc(a_count);
          a_col[a_count] := j;
        end;
      end;
    end;
    
    function CheckColumns: Boolean;
    var
      v, i, k, a: Integer;
    begin
      CheckColumns := False;
      for v := 1 to v_count do
        for i := 1 to i_count do
          if i_col[i] > v_col[v] then
            for k := 1 to k_count do
              if k_col[k] > i_col[i] then
                for a := 1 to a_count do
                  if a_col[a] > k_col[k] then
                  begin
                    CheckColumns := True;
                    Exit;
                  end;
    end;
    
    begin
      ReadLn(t);
    
      while t > 0 do
      begin
        Dec(t);
        ReadLn(n, m);
    
        for i := 1 to n do
          ReadLn(grid[i, 1..m]);
    
        FindColumnsInGrid;
    
        if CheckColumns then
          WriteLn('YES')
        else
          WriteLn('NO');
      end;
    end.
    
    1 phản hồi

    • 0
      hoangphucnguyen2012    8:29 p.m. 24 Tháng 7, 2024 chỉnh sửa 8

      If you see this, pls copy this comment and post it to another problem or on the chat. If you do this you are super lucky and handsome1 (like me), but if you don't do that, you are gay
      hoangphucnguynen2012 is super handsome

      2 phản hồi