#1589. Bản đồ mở (MAP)

Bộ nhớ: 512 MiB Thời gian: 1000 ms Nhập/xuất từ luồng chuẩn
Kiểu bài: Thông thường Kiểu chấm: So sánh văn bản
Đưa lên bởi: Trùm CUỐI

Đề bài

Sereja là một lập trình viên đam mê địa lý. Anh ấy muốn tạo ra một bản đồ địa hình từ một lưới dữ liệu độ cao kích thước n \times m . Để xử lý dữ liệu, anh ấy cần tính toán trên các vùng nhỏ hơn. Cụ thể, anh ấy muốn tính tổng của các giá trị nhỏ nhất trong tất cả các hình chữ nhật con có kích thước a \times b của lưới dữ liệu ban đầu.

Vì dữ liệu đầu vào có thể rất lớn, ma trận độ cao sẽ được sinh ra bằng một công thức thay vì nhập trực tiếp.

Dữ liệu:

  • Dòng đầu tiên chứa 4 số nguyên n, m, a, b ( 1 \le n, m \le 3000 , 1 \le a \le n , 1 \le b \le m ).
  • Dòng thứ hai chứa 4 số nguyên g_0, x, y, z ( 0 \le g_0, x, y, z \le 10^9 ).
  • Ma trận độ cao H kích thước n \times m (đánh số từ 1) được xây dựng như sau:
    • Dãy số g được sinh bởi công thức: g_i = (g_{i-1} \cdot x + y) \pmod z với i > 0 .
    • Giá trị tại hàng i , cột j của ma trận là: H[i][j] = g_{(i-1) \cdot m + j - 1} .

Kết quả:

  • In ra một số nguyên duy nhất là tổng của tất cả các giá trị nhỏ nhất của mọi hình chữ nhật con kích thước a \times b trong ma trận H .

Ví dụ:

Dữ liệu:

3 4 2 1
1 2 3 59

Kết quả:

111

Giới hạn:

  • Subtask #1: n, m \le 100 .
  • Subtask #2: n, m \le 3000 .