Covid'19 (DHBB CT)

Xem PDF

Điểm: 600 (p) Thời gian: 3.0s Bộ nhớ: 1023M Input: bàn phím Output: màn hình

Dịch Covid-19 đã được kiểm soát, trong gần một tháng qua, tại Việt nam không có ca nhiễm mới trong cộng đồng. Lệnh cách ly đã được nới lỏng, Hồng và các bạn được đi học trở lại, đó cũng là thời điểm thầy Phương mở trại HCC cho các bạn yêu thích lập trình, một hoạt động mà thầy đã duy trì trong nhiều năm qua. Tham gia HCC, Hồng rất thích thú với một bài toán của thầy Phương, bài toán mô phỏng việc di chuyển của virus, cụ thể bài toán như sau: Xét lưới ô vuông thước \(m \times n\), các dòng được đánh số từ \(1\) đến \(m\) từ trên xuống, các cột được đánh số từ \(1\) đến \(n\) từ trái sang phải. Ô nằm trên giao của dòng \(i\), cột \(j\) được gọi là ô \((i,j)\) và ô này chứa một số nguyên dương \(a(i,j)\). Nếu một virus đang ở ô \((x,y)\), virus có thể thực hiện bước di chuyển sau:

  • Virus di chuyển sang ô kề cạnh với ô \((x,y)\) nằm trong lưới, việc di chuyển này mất 1 đơn vị thời gian;
  • Virus di chuyển sang ô \((u,v)\) nằm trong lưới nếu \(u \times v=a(x,y)\), việc di chuyển này mất 3 đơn vị thời gian.

Bài toán yêu cầu tính thời gian nhỏ nhất để virus di chuyển từ ô \((p,q)\) đến ô \((r,s)\).

Đây là bài toán khó đối với Hồng nên Hồng nhờ các anh chị tham gia kỳ thi Duyên Hải năm 2020 giải giúp.

Yêu cầu: Cho lưới kích thước \(m \times n\) và các số trên lưới. Có \(h\) câu hỏi, với câu hỏi thứ \(k\) (\(k=1,2, \cdots ,h\)) cần phải trả lời thời gian nhỏ nhất để virus di chuyển từ ô \((p_k,q_k)\) đến ô \((r_k,s_k)\) là bao nhiêu?

Input

  • Dòng đầu chứa ba số nguyên dương \(m,n,h\) \((h \leq 5)\);
  • Dòng thứ \(i\) \((i=1,2,\cdots,m)\) trong \(m\) dòng tiếp theo chứa \(n\) số nguyên dương \(a(i,1)\),\(a(i,2)\),\(\cdots\),\(a(i,n)\). Các số có giá trị không vượt quá \(10^6\).
  • Dòng thứ \(k\) \((k=1,2,\cdots,h)\) trong \(h\) dòng tiếp theo chứa bốn số nguyên \(p_k,q_k,r_k,s_k\).

Output

  • Ghi ra \(h\) dòng, dòng thứ \(k\) \((k=1,2,\cdots,h)\) ghi một số nguyên là thời gian nhỏ nhất để virus di chuyển từ ô \((pk,qk)\) đến ô \((rk,sk)\).

Scoring

  • Subtask \(1\) (\(20\%\) số điểm): \(m \times n \leq 10^2\);
  • Subtask \(2\) (\(20\%\) số điểm): \(m \times n \leq 10^3\);
  • Subtask \(3\) (\(20\%\) số điểm): \(m \times n \leq 10^4\);
  • Subtask \(4\) (\(20\%\) số điểm): \(m \times n \leq 10^5\);
  • Subtask \(5\) (\(20\%\) số điểm): \(m \times n \leq 10^6\)

Example

Test 1

Input
2 5 2
8 6 4 1 1
1 1 1 1 1
1 1 2 5
2 5 1 1 
Output
4
3

Bình luận


  • 1
    letangphuquy    9:40 p.m. 13 Tháng 6, 2020

    Thầy chỉnh giới hạn thời gian lên 2s được không ạ? Em nộp bên Codeforces thì AC.


    • 1
      THOANGLQDT    12:29 p.m. 7 Tháng 11, 2020

      bài này có sol ko ạ


    • 7
      cuom1999    11:46 p.m. 13 Tháng 6, 2020 chỉnh sửa 2

      Để a chỉnh lên, a cũng bị TLE :v.

      p/s: chỉnh lên vẫn tạch

      3 bình luận nữa