Điều hướng chính

Ngôn ngữ

Phím tắt

/
Chuyển đến ô tìm bài
g p
Đi đến bài tập
g c
Đi đến kỳ thi
g u
Đi đến người dùng
?
Mở trợ giúp phím tắt

Bài tập

Bài được chọn theo nhịp luyện tập của bạn, cùng mọi bài mới vừa lên.

Dễ

Kiến kiếm ăn sang phải

100 điểm 0% AC 0 đã giải

staffagent

Một chú kiến kiếm ăn trên sân trường hình chữ nhật gồm \(M\) hàng và \(N\) cột (hàng đánh số từ \(1\) đến \(M\) từ trên xuống, cột đánh số từ \(1\) đến \(N\) từ trái sang). Ô \((i, j)\) chứa \(a_{i,j}\) đơn vị thức ăn; giá trị âm nghĩa là ô đó có bẫy làm kiến mất thức ăn.

Kiến chọn một ô bất kỳ ở cột \(1\) để xuất phát. Từ ô \((i, j)\), mỗi bước kiến chỉ sang một trong ba ô ở cột ngay bên phải: \((i-1, j+1)\), \((i, j+1)\) hoặc \((i+1, j+1)\) (không được ra ngoài sân). Kiến kết thúc khi đến cột \(N\). Tổng thức ăn thu được là tổng các giá trị trên các ô đi qua, kể cả ô xuất phát.

Hãy tìm tổng lớn nhất có thể đạt được.

Input

  • Dòng đầu chứa hai số nguyên \(M\) và \(N\).
  • \(M\) dòng tiếp theo, mỗi dòng gồm \(N\) số nguyên \(a_{i,1}, \dots, a_{i,N}\).

Output

  • In ra một số nguyên: tổng lớn nhất.

Constraints

  • \(1 \le M, N \le 1000\)
  • \(|a_{i,j}| \le 10^9\)

Sample Input

3 5
-4 6 -2 3 1
8 -5 4 -1 2
-3 7 -6 5 -9

Sample Output

26

Explanation

Đường đi tốt nhất là \((2,1) \to (3,2) \to (2,3) \to (3,4) \to (2,5)\) với tổng \(8 + 7 + 4 + 5 + 2 = 26\).

Dễ

Dựng mảng

100 điểm 0% AC 0 đã giải

root

Ta xây dựng dãy số \(a_1, a_2, \dots, a_n\) theo các quy tắc sau:

  • \(a_1\) là một số nguyên bất kỳ thuộc đoạn \([1, k]\).
  • Với mỗi \(i\) từ \(2\) đến \(n\), giá trị \(a_i\) được chọn sao cho:

  • \(a_i = a_{i-1} + 1\) hoặc \(a_i = a_{i-1} - 1\);

  • và luôn đảm bảo \(1 \le a_i \le k\).

Sau khi xây dựng xong dãy \(a\), ta định nghĩa:

  • \(lst(i) = j\) là vị trí \(j\) cuối cùng sao cho \(a[j]=i\).
  • \(lst(i) = 0\) nếu không tồn tại vị trí \(j\) sao cho \(a[j]=i\).

Từ dãy \(a\), ta thu được một dãy mới gồm \(k\) phần tử là \((\text{lst}(1), \text{lst}(2), \dots, \text{lst}(k))\).

Vậy với bất kì dãy \(a\) có thể tạo ra, yêu cầu đếm xem có thể tạo được bao nhiêu dãy \(lst\) khác nhau.

Input

Gồm hai số nguyên \(n\) và \(k\) \((1 \le n, k \le 5000)\).

Output

In ra một số nguyên --- số lượng dãy \(lst\) khác nhau thu được, modulo \(10^9 + 7\).

Example

Test 1

Input
4 3
Output
8

Scoring

  • Subtask 1 (20 điểm): \(n, k \le 18\)
  • Subtask 2 (30 điểm): \(n, k \le 50\)
  • Subtask 3 (30 điểm): \(n, k \le 500\)
  • Subtask 4 (20 điểm): Không có ràng buộc gì thêm.
Dễ

Giải mã

100 điểm 0% AC 0 đã giải

root

Nhân dịp tổng kết năm học, câu lạc bộ Tin học của Nam tham gia trò chơi "Tìm kho báu". Mật mã là dãy \(S\) gồm chữ cái in thường, được mã hóa thành dãy \(T\) theo quy tắc:

  • Chọn 1 ký tự \(ch\) và xóa tất cả \(ch\) trong \(S\) thu được dãy \(K\)
  • Nối \(K\) vào sau \(S\) thu được \(T\)

Cho dãy \(T\) và ký tự \(ch\), hãy tìm lại dãy \(S\) ban đầu.

Input

Tệp GIAIMA.INP gồm:

  • Dòng 1: Dãy \(T\) (\(2 \leq |T| \leq 10^6\))
  • Dòng 2: Ký tự \(ch\)

Output

Tệp GIAIMA.OUT chứa:

  • Dãy \(S\) nếu tìm được
  • Số -1 nếu không hợp lệ

Example

Test 1

Input
abcab
c
Output
abc

Scoring

  • 60% test: \(2 \leq |T| \leq 1000\)
  • 40% test: \(1000 < |T| \leq 10^6\)
Dễ

Lũy thừa 2

100 điểm 0% AC 0 đã giải

root

Cho dãy số gồm \(n\) số nguyên dương. Đếm số cặp \(i\), \(j\) \((i < j)\) sao cho \(a_{i} + a_{j} = 2 ^ x\) \((x > 0)\).

Input

Dòng đầu tiên là số nguyên dương \(n\). \((n \leq 10^5)\).

Dòng thứ 2 gồm \(n\) số nguyên dương \(a_{1}, a_{2}, ..., a_{n}\) \((a_{i} \leq 10^9)\).

Output

Kết quả bài toán

Example

Test 1

Input
4
7 3 2 1
Output
2

Test 2

Input
3
1 1 1
Output
3

Scoring

\(60\%\) số điểm có \(n \leq 10^3\).

\(40\%\) còn lại là ràng buộc gốc.

Xem thêm