Dãy số

Cho dãy số nguyên dương \(a_1, a_2, ..., a_n\). Mỗi thao tác bạn được phép chọn một phần tử bất kỳ trong dãy để tăng lên \(1\) đơn vị.

Yêu cầu: Thực hiện \(m\) thao tác để phần tử nhỏ nhất của dãy (sau khi thực hiện \(m\) thao tác) nhận giá trị lớn nhất.

Dữ liệu vào: :

  • Dòng đầu tiên gồm hai số nguyên \(n\) và \(m\) (\(1 \le n \le 2 \cdot 10^5; 0 \le m \le 10^9\)) lần lượt là số lượng phần tử của dãy và số thao tác thực hiện;
  • Dòng thứ hai gồm \(n\) số nguyên \(a_1, a_2, ..., a_n\) (\(1 \le a_i \le 10^9\)) là giá trị ban đầu của các phần tử.

Kết quả: Ghi ra một số nguyên duy nhất là giá trị nhỏ nhất của dãy số sau khi thực hiện \(m\) thao tác theo yêu cầu trên.

Ví dụ:

stdin stdout
5 6
2 8 6 5 9
6

Ràng buộc:

  • Có 20% số điểm có giá trị \(n \le 10^5\) và \(m \le 1\);
  • Có 20% số điểm có giá trị \(n = 2\) và \(m \le 10^2\);
  • Có 30% số điểm có giá trị \(n \le 10^3\) và \(m \le 10^2\);
  • 30% số điểm còn lại không có ràng buộc gì thêm.
...Xem thêm

Khóa số

Lưu ý: hiện tại bài đang lỗi không thể chấm bằng file .inp .out, nên các bạn không cần freopen mà chỉ cần nhập bằng màn hình và in ra màn hình thôi nhé

Chuyển đổi số là một xu thế tất yếu với hầu hết các công việc được thực hiện trong môi trường số. Cùng với sự phát triển nhanh chóng của AI, số người tham gia làm việc trong môi trường số ngày càng nhiều, song song với đó là nhu cầu nâng cao các giải pháp bảo mật thông tin và khóa số là một trong những giải pháp.

IT làm việc cho một công ty bảo mật và đã nghĩ ra giải pháp mã hóa các chuỗi mật khẩu thành các con số như sau: Từ một xâu S đã cho chỉ chứa các chữ cái tiếng Anh, IT liệt kê ra tất cả các xâu con khác rỗng của xâu S, sau đó gom các xâu con giống nhau vào cùng một cụm và đếm số lượng xâu trong mỗi cụm. Tiếp theo IT viết chương trình cho sinh ra một số ngẫu nhiên N và tính số T là tổng các lũy thừa bậc N của số lượng xâu của các cụm, T được gọi là khóa số của xâu S.

Ví dụ: N = 3 và xâu S là "mama" thì các xâu con khác rỗng của xâu S là: "m", "a", "m", "a", "ma", "am", "ma", "mam", "ama", "mama" được gom thành 7 cụm (cụm 1 chứa xâu "m" với số lượng là 2, cụm 2 chứa xâu "a" với số lượng là 2, cụm 3 chứa xâu "ma" với số lượng là 2, cụm 4 chứa xâu "am" với số lượng là 1, cụm 5 chứa xâu "mam" với số lượng là 1, cụm 6 chứa xâu "ama" với số lượng là 1, cụm 7 chứa xâu "mama" với số lượng là 1). Khi này tổng T = 2^3 + 2^3 + 2^3 + 1^3 + 1^3 + 1^3 + 1^3 = 28.

Yêu cầu

Bạn được cho một xâu S và số N, hãy lập trình tính khóa số T tương ứng với xâu S.

Dữ liệu

Cho trong tệp DKEY.INP gồm một dòng duy nhất chứa xâu ký tự S và số nguyên dương N cách nhau bởi một dấu cách (độ dài xâu S không vượt quá 10^4, 1 <= N <= 10^9).

Kết quả

Ghi ra tệp DKEY.OUT một số nguyên duy nhất là phần dư của phép chia T cho 10^9 + 7.

Ví dụ

Input

mama 3

Output

28

Ràng buộc

  • Subtask 1: 30% số tests tương ứng 30% số điểm có độ dài xâu S không vượt quá 10^2.
  • Subtask 2: 30% số tests tương ứng 30% số điểm có độ dài xâu S không vượt quá 10^3.
  • Subtask 3: 40% số điểm không có ràng buộc gì thêm.
...Xem thêm

Permutation Separation

Cho một hoán vị \(p = (p_1, p_2, \dots, p_n)\) gồm \(n\) phần tử phân biệt từ \(1\) đến \(n\). Mỗi phần tử \(p_i\) có một trọng số (hoặc chi phí di chuyển) tương ứng là \(a_i\).

Ban đầu, bạn chọn một vị trí \(k\) (\(1 \le k < n\)) để chia hoán vị thành hai tập hợp không rỗng:

  • Tập hợp 1 (Tiền tố): gồm các phần tử \(p_1, p_2, \dots, p_k\).
  • Tập hợp 2 (Hậu tố): gồm các phần tử \(p_{k+1}, p_{k+2}, \dots, p_n\).

Sau khi chia, bạn có thể thực hiện di chuyển các phần tử giữa hai tập hợp. Mỗi lần di chuyển phần tử \(p_i\) từ Tập hợp 1 sang Tập hợp 2 (hoặc ngược lại từ Tập hợp 2 sang Tập hợp 1), bạn phải trả một chi phí bằng \(a_i\).

Yêu cầu: Hãy chọn vị trí \(k\) và các phần tử di chuyển sao cho tổng chi phí phải trả là nhỏ nhất, và sau tất cả các di chuyển, mọi phần tử trong Tập hợp 1 đều nhỏ hơn mọi phần tử trong Tập hợp 2.

Lưu ý: Nếu sau quá trình di chuyển, một trong hai tập hợp trở nên rỗng, điều kiện trên vẫn được coi là thỏa mãn.

Dữ liệu vào (Input)

  • Dòng đầu tiên chứa số nguyên \(n\) (\(2 \le n \le 2 \cdot 10^5\)) — độ dài của hoán vị.
  • Dòng thứ hai chứa \(n\) số nguyên \(p_1, p_2, \dots, p_n\) (\(1 \le p_i \le n\)) — các phần tử của hoán vị \(p\). Đảm bảo các phần tử đôi một khác nhau.
  • Dòng thứ ba chứa \(n\) số nguyên \(a_1, a_2, \dots, a_n\) (\(1 \le a_i \le 10^9\)) — chi phí di chuyển tương ứng của từng phần tử.

Dữ liệu ra (Output)

  • In ra một số nguyên duy nhất — chi phí tối thiểu để đạt được mục tiêu.

Ví dụ 1

Input:

3
3 1 2
7 1 4

Output:

4


Ví dụ 2

Input:

4
2 4 1 3
5 9 8 3

Output:

3


Ví dụ 3

Input:

6
3 5 1 6 2 4
9 1 9 9 1 9

Output:

2

...Xem thêm

Sạc pin

Có một bộ sạc với số lượng khe sạc không giới hạn. Tại thời điểm \(0\), tất cả các khe sạc đều trống.

Dung lượng tối đa của một viên pin là \(V\). Khi một viên pin được cắm vào khe sạc, nó được sạc với tốc độ \(1\) đơn vị dung lượng trên mỗi \(1\) đơn vị thời gian cho đến khi đạt dung lượng tối đa \(V\) (nghĩa là mức sạc tăng thêm \(1\) sau mỗi \(1\) đơn vị thời gian trôi qua).

Hãy xử lý \(Q\) truy vấn theo thứ tự. Truy vấn thứ \(q\) diễn ra tại thời điểm \(t_q\). Dữ liệu đảm bảo \(t_1 < t_2 < \dots < t_Q\).

Có 2 loại truy vấn:

  • Loại 1 (1 t_q w_q): Tại thời điểm \(t_q\), cắm một viên pin có mức sạc ban đầu là \(w_q\) vào một khe sạc.
  • Loại 2 (2 t_q): Tại thời điểm \(t_q\), rút một viên pin có mức sạc cao nhất ra khỏi khe sạc và in ra mức sạc của viên pin đó tại thời điểm \(t_q\). Nếu hiện tại không có viên pin nào đang được cắm, in ra -1.

Dữ liệu vào

Dữ liệu nhập từ luồng chuẩn theo định dạng sau:

  • Dòng đầu tiên gồm hai số nguyên \(Q\) và \(V\).
  • \(Q\) dòng tiếp theo, mỗi dòng mô tả một truy vấn thuộc một trong hai dạng:
  • 1 t_q w_q
  • 2 t_q

Kết quả

Gọi \(x\) là số lượng truy vấn loại 2. In ra \(x\) dòng, dòng thứ \(k\) (\(1 \le k \le x\)) chứa kết quả tương ứng cho truy vấn loại 2 thứ \(k\).

Điều kiện

  • \(1 \le Q \le 3 \times 10^5\)
  • \(1 \le V \le 10^9\)
  • Đối với truy vấn loại 1: \(1 \le t_q \le 10^9\), \(0 \le w_q \le V\).
  • Đối với truy vấn loại 2: \(1 \le t_q \le 10^9\).
  • \(t_1 < t_2 < \dots < t_Q\).
  • Tất cả các giá trị đầu vào đều là số nguyên.

Ví dụ

Input Output
7 100
1 15 60
1 25 80
2 30
1 45 0
2 60
2 70
2 80
85
100
25
-1
...Xem thêm