#CCBCHBAHAI0000096. Final Array Clinic - tìm và sửa 12 lỗi

    ID: 1014 Loại: Thông thường 2000ms 256MiB Tried: 0 Đã chấp nhận: 0 Độ khó: 1 Đăng bởi: Nhãn>Programming language basicsStatic arraysIteration techniquesImplementation techniquesWorking with numbersInteger arithmetic

Final Array Clinic - tìm và sửa 12 lỗi

Final Array Clinic - tìm và sửa 12 lỗi

Nguồn: Phước Hưng OJ

Phiên bản: Phước Hưng OJ Extended

Đề bài

Bài clinic tổng hợp này mô hình hóa 12 lỗi mảng thường gặp thành 12 đại lượng chẩn đoán phải tính đúng.

Cho mảng tĩnh có sức chứa CC và kích thước logic nn:

a0,a1,…,an−1,1≤n≤C,a_0,a_1,\ldots,a_{n-1},\qquad 1\le n\le C,

cùng số nguyên xx và vị trí chèn 0-based pp với 0≤p≤n0\le p\le n.

Hãy tính 12 kết quả sau, theo đúng thứ tự:

  1. D1=nD_1=n: số lần lặp của vòng duyệt đúng for (i = 0; i < n; ++i).
  2. D2=n−1D_2=n-1: chỉ số hợp lệ cuối cùng.
  3. D3=a0D_3=a_0: phần tử đầu.
  4. D4=an−1D_4=a_{n-1}: phần tử cuối.
  5. D5=∑i=0n−1aiD_5=\sum_{i=0}^{n-1}a_i: tổng với accumulator được khởi tạo đúng.
  6. D6=min⁡iaiD_6=\min_i a_i.
  7. D7=max⁡iaiD_7=\max_i a_i.
  8. D8=min⁡{i∣ai=x}D_8=\min\{i\mid a_i=x\}, hoặc −1-1 nếu xx không xuất hiện.
  9. D9=max⁡{i∣ai=x}D_9=\max\{i\mid a_i=x\}, hoặc −1-1 nếu xx không xuất hiện.
  10. D10=∣{i∣ai=x}∣D_{10}=|\{i\mid a_i=x\}|.
  11. D11=1D_{11}=1 nếu còn chỗ chèn (n<Cn<C), ngược lại D11=0D_{11}=0.
  12. Tạo mảng bb bằng cách chèn xx tại chỉ số pp chỉ khi n<Cn<C; nếu n=Cn=C, giữ nguyên mảng. Gọi kích thước kết quả là mm.

Nếu n<Cn<C thì

$$b_i=\begin{cases} a_i,&0\le i<p,\\ x,&i=p,\\ a_{i-1},&p<i\le n, \end{cases} \qquad m=n+1.$$

Nếu n=Cn=C thì b=ab=a và m=nm=n.

Bài này kiểm tra trực tiếp các lỗi: off-by-one, truy cập a[n], nhầm first/last, accumulator chưa khởi tạo, min/max sai, first/last occurrence sai, count sai, capacity sai và shift sai chiều khi chèn.

Input

Dòng đầu chứa CC, nn, pp, xx. Dòng thứ hai chứa nn số nguyên aia_i.

Output

Dòng 1 in lần lượt D1,D2,…,D11D_1,D_2,\ldots,D_{11}. Dòng 2 in mm. Dòng 3 in mm phần tử của mảng kết quả bb.

Subtask

Subtask 1 (20 điểm): 1≤n≤C≤101\le n\le C\le10, ∣ai∣,∣x∣≤103|a_i|,|x|\le10^3.

Subtask 2 (30 điểm): 1≤n≤C≤50001\le n\le C\le5000, ∣ai∣,∣x∣≤106|a_i|,|x|\le10^6.

Subtask 3 (50 điểm): 1≤n≤C≤2⋅1051\le n\le C\le2\cdot10^5, ∣ai∣,∣x∣≤109|a_i|,|x|\le10^9.

Ví dụ

Input

7 5 2 4
4 1 4 9 2

Output

5 4 4 2 20 1 9 0 2 2 1
6
4 1 4 4 9 2

Giải thích

Có n=5n=5 phần tử nên chỉ số cuối là 44. Giá trị 44 xuất hiện đầu tiên ở chỉ số 00, cuối cùng ở chỉ số 22, tổng cộng 2 lần. Vì 5<75<7, có thể chèn thêm 44 tại p=2p=2.