TLE-oj Cup Round 9 - Đếm số chia hết

Sunlight

Cho số nguyên dương n và k số nguyên tố p_1, p_2, ..., p_k. Tính số lượng số nguyên dương không lớn hơn n và chia hết cho một trong các số nguyên tố p_1, p_2, ..., p_k.

Input, Output và Subtasks

Input: (DIVISIBLE.inp)
  • Dòng đầu gồm hai số nguyên dương n, k (n \le 10^9).
  • Dòng tiếp theo gồm k số nguyên dương p_1, p_2, ..., p_n (p_i \le 10^9).
Output: (DIVISIBLE.out)
  • In ra kết quả bài toán.
Subtasks
  • Subtask 1 (30\%): k = 1.
  • Subtask 2 (30\%): k = 2.
  • Subtask 3 (40\%): k \le 20.

Sample

Input (DIVISIBLE.inp)
10 3
2 3 5
Output (DIVISIBLE.out)
8
Note
  • Ta có 2, 4, 6, 8, 10, 3, 9, 5 là các số chia hết cho 2, 3 hoặc 5 không lớn hơn 10.

TLE-oj Cup Round 9 - Khôi phục số

Sunlight

Từ một tập S gồm n số ban đầu, máy tính sẽ tạo ra 2^n - 1 số nguyên dương bằng cách tính tổng tất cả các tập con khác rỗng của tập S. Ví dụ như với tập S = {1, 2, 3}, máy tính sẽ tạo ra các số:

  • 3 = 1 + 2.
  • 4 = 1 + 3.
  • 5 = 2 + 3.
  • 6 = 1 + 2 + 3.
  • Các số 1, 2, 3 ban đầu.

Sau khi tạo ra các số, máy tính sẽ tráo đổi vị trí các số tạo được tạo thành một dãy số p, ví dụ dãy p có thể là (4, 3, 5, 2, 1, 3, 6). Nhiệm vụ của bạn là khôi phục lại tập S ban đầu và in ra các số trong tập S theo thứ tự từ nhỏ đến lớn.

Input, Output và Subtasks

Input: (RECOVER.inp)
  • Dòng đầu gồm số nguyên dương duy nhất n.
  • Dòng tiếp theo gồm 2^n - 1 số nguyên dương p_1, p_2, ..., p_n (p_i \le 10^{18}).
Output: (RECOVER.out)
  • In ra các số trong tập S theo thứ tự từ nhỏ đến lớn.
Subtasks
  • Subtask 1 (30\%): n = 2.
  • Subtask 2 (30\%): n = 3.
  • Subtask 3 (20\%): n \le 5.
  • Subtask 4 (20\%): n \le 20.

Sample

Input (RECOVER.inp)
3
4 3 5 2 1 3 6
Output (RECOVER.out)
1 2 3
Note
  • Chú thích trên đề bài.

TLE-oj Cup Round 9 - Dãy bằng nhau

Sunlight

Cho dãy số nguyên dương a_1, a_2, ..., a_n. Với mỗi thao tác bạn có thể tăng hoặc giảm một phần tử đi 1 đơn vị. Đếm số thao tác ít nhất cần thiết để a_1 = a_2 = ... = a_n.

Input, Output và Subtasks

Input: (EQUALARR.inp)
  • Dòng đầu gồm số nguyên dương duy nhất n (n \le 10^6).
  • Dòng tiếp theo gồm n số nguyên dương a_1, a_2, ..., a_n (a_i \le 10^9).
Output: (EQUALARR.out)
  • In ra một số nguyên duy nhất là số thao tác tối thiểu để cả dãy bằng nhau
Subtasks
  • Bài này không có subtask.

Sample

Input (EQUALARR.inp)
4
1 2 4 5
Output (EQUALARR.out)
6
Note
  • Cần 2 thao tác để biến đổi các số 1 và 5 thành 3.
  • Cần 1 thao tác để biến đổi các số 2 và 4 thành 3.
  • Vậy tổng cộng cần 6 thao tác và đó là số thao tác ít nhất cần dùng.

TLE-oj Cup Round 10 - Hàm số

Sunlight

NguyenHuuNhatQuang có hai hàm f(x, y, k) và g(a, b, c, k) được định nghĩa như sau (với div là phép chia lấy nguyên, mod là phép chia lấy dư và * là phép nhân):

định nghĩa g(a, b, c, k):
    nếu b = 0:
        nếu c = 0:
            trả về a.
        ngược lại:
            trả về g(a, 1, 0, k).
    ngược lại:
        nếu a = 0:
            nếu c = 0:
                trả về b.
            ngược lại
                trả về g(1, b, 0, k).
        ngược lại:
            nếu a mod k + b mod k + c >= k:
                đặt t = g(a div k, b div k, 1, k)
            ngược lại:
                đặt t = g(a div k, b div k, 0, k)
            trả về t * k + ((a + b + c) mod k).

định nghĩa f(a, b, k):
    nếu b = 0:
        trả về 0.
    ngược lại:
        đặt t = f(a, b div 2, k)
        nếu b mod 2 = 1:
            trả về g(t * 2, a, 0, k).
        ngược lại:
            trả về t * 2.
Cài đặt đoạn mã giả trên bằng C++
long long g(long long a, long long b, long long c, long long k) {
    if (b == 0) {
        if (c == 0) {
            return a;
        } else {
            return g(a, 1, 0, k);
        }
    } else {
        if (a == 0) {
            if (c == 0) {
                return b;
            } else {
                return g(1, b, 0, k);
            }
        } else {
            if (a % k + b % k + c >= k) {
                long long t = g(a / k, b / k, 1, k);
                return t * k + ((a + b + c) % k);
            } else {
                long long t = g(a / k, b / k, 0, k);
                return t * k + ((a + b + c) % k);
            }
        }
    }
}

long long f(long long a, long long b, long long k) {
    if (b == 0) {
        return 0;
    } else {
        long long t = f(a, b / 2, k);
        if (b % 2 == 1) {
            return g(t * 2, a, 0, k);
        } else {
            return t * 2;
        }
    }
}

Nhiệm vụ của bạn rất đơn giản, đó là đếm xem với hai số nguyên dương n, k cho trước, có bao nhiêu cặp số nguyên dương (a, b) sao cho a \le b \le n và f(a, b, k) = n.

Input, Output và Subtasks

Input: (FUNCTION.inp)
  • Một dòng duy nhất gồm hai số nguyên dương n, k (1 < n, k \le 10^{14}).
Output: (FUNCTION.out)
  • In ra kết quả bài toán. Vì kết quả có thể rất lớn nên chỉ cần lấy số dư của nó khi chia cho 10^9 + 7.
Subtasks
  • Subtask 1 (60\%): n \le 2000.
  • Subtask 2 (40\%): Không có giới hạn gì thêm.

Sample

Input (FUNCTION.inp)
2 2
Output (FUNCTION.out)
1
Note
  • Không có note.

TLE-oj Cup Round 9 - Tổng phần nguyên 2

Sunlight

Cho hai số nguyên dương n, k. Tính [\frac{n}{1}] + [\frac{n}{2}] + ... + [\frac{n}{k}].

Input, Output và Subtasks

Input: (SUMFLOOR.inp)
  • Một dòng duy nhất gồm hai số nguyên dương n, k (k \le n).
Output: (SUMFLOOR.out)
  • In ra kết quả bài toán.
Subtasks
  • Subtask 1 (50\%): n \le 10^{7}.
  • Subtask 2 (50\%): n \le 10^{14}.

Sample

Input (SUMFLOOR.inp)
10 3
Output (SUMFLOOR.out)
18
Note

[\frac{10}{1}] + [\frac{10}{2}] + [\frac{10}{3}] = 10 + 5 + 3 = 18.

TLE-oj Cup Round 9 - Tổng chữ số

Sunlight

Cho số nguyên dương n. Tính tổng các chữ số của các số từ 1 đến n.

Input, Output và Subtasks

Input: (SUMDIGIT.inp)
  • Một dòng duy nhất gồm số nguyên dương n.
Output: (SUMDIGIT.out)
  • In ra kết quả bài toán.
Subtasks
  • Subtask 1 (50\%): n \le 10^{7}.
  • Subtask 2 (20\%): n \le 10^{8}.
  • Subtask 3 (30\%): n \le 10^{16}.

Sample

Input (SUMDIGIT.inp)
9
Output (SUMDIGIT.out)
45
Note

1 + 2 + 3 + ... + 9 = 45..

TLE-oj Cup Round 9 - Tổng phần nguyên 1

Sunlight

Cho số nguyên dương n. Tính [\frac{n}{1}] + [\frac{n}{2}] + ... + [\frac{n}{n}].

Input, Output và Subtasks

Input: (SUMFLOOR1.inp)
  • Một dòng duy nhất gồm số nguyên dương n.
Output: (SUMFLOOR1.out)
  • In ra kết quả bài toán.
Subtasks
  • Subtask 1 (50\%): n \le 10^{7}.
  • Subtask 2 (50\%): n \le 10^{14}.

Sample

Input (SUMFLOOR1.inp)
10
Output (SUMFLOOR1.out)
27
Note

[\frac{10}{1}] + [\frac{10}{2}] + ... + [\frac{10}{10}] = 27.

TLE-oj Cup Round 9 - Liệt kê ước số

Sunlight

Cho hai số nguyên dương a, b. Liệt kê tất cả các ước của a \times b theo thứ tự từ nhỏ đến lớn.

Input, Output và Subtasks

Input: (DIVISORS.inp)
  • Một dòng duy nhất gồm hai số nguyên dương a, b.
Output: (DIVISORS.out)
  • Một dòng duy nhất gồm các ước của a \times b theo thứ tự từ nhỏ đến lớn.
Subtasks
  • Subtask 1 (40\%): a, b \le 10^{4}.
  • Subtask 2 (30\%): a, b \le 10^{6}.
  • Subtask 3 (30\%): a, b \le 10^{9}.

Sample

Input (DIVISORS.inp)
4 3
Output (DIVISORS.out)
1 2 3 4 6 12
Note
  • Các ước của 12 là 1, 2, 3, 4, 6, 12.

TLE-oj Cup Round 9 - Tổng lũy thừa

Sunlight

Cho hai số nguyên dương n, k, m. Tính n^0 + n^1 + n^2 + ... + n^k \mod m.

Input, Output và Subtasks

Input: (SUMPOW.inp)
  • Một dòng duy nhất gồm ba số nguyên dương n, k, m (n \le 10^{18}).
Output: (SUMPOW.out)
  • In ra kết quả bài toán.
Subtasks
  • Subtask 1 (40\%): m, k \le 10^6.
  • Subtask 2 (30\%): m, k \le 10^{9}.
  • Subtask 2 (30\%): m, k \le 10^{18}.

Sample

Input (SUMPOW.inp)
3 3 10
Output (SUMPOW.out)
0
Note

3^0 + 3^1 + 3^2 + 3^3 = 1 + 3 + 9 + 27 = 40.

Xâu ký tự (HSG9 NB 2023)

Sunlight

Cho một xâu ký tự S gồm n ký tự chữ cái thường.

Yêu cầu: Hãy xác định ký tự xuất hiện nhiều lần nhất trong xâu S, nếu có nhiều ký tự cùng xuất hiện nhiều lần nhất thì in ra ký tự có thứ tự từ điển nhỏ hơn.

Input, Output và Subtasks

Input: (xau.inp)
  • Chứa một xâu có n ký tự chữ cái thường (n\le 10^3)
Output: (xau.out)
  • Dòng 1 ghi ra ký tự xuất hiện nhiều lần nhất, nếu có nhiều ký tự cùng xuất hiện nhiều lần nhất thì in ra ký tự có thứ tự từ điển nhỏ hơn.
  • Dòng 2 ghi số lần xuất hiện tương ứng
Subtasks
  • Subtask 1 (40\%): n\le 10
  • Subtask 2 (40\%): n\le 100
  • Subtask 3 (20\%): Không có ràng buộc gì thêm

Sample 1

Input (xau.inp)
abbaac
Output (xau.out)
a
3
Note

Ký tự a xuất hiện nhiều lần nhất với số lần xuất hiện là 3

Sample 2

Input (xau.inp)
cbsvcccbfbb
Output (xau.out)
b
4
Note

Có 2 ký tự xuất hiện nhiều lần nhất là b và c với cùng số lần xuất hiện là 4. In ra ký tự b vì có thứ tự từ điển nhỏ hơn c

Số Mersenne (HSG9 NB 2023)

Sunlight

Một số nguyên tố được gọi là số Mersenne nếu nó có thể biểu diễn dưới dạng 2^k-1 trong đó k cũng là 1 số nguyên tố.

Yêu cầu: Cho số tự nhiên n. Tìm số Mersenne lớn nhất nhưng nhỏ hơn n.

Input, Output và Subtasks

Input: (mersen.inp)
  • Ghi số nguyên n (3<n\le 10^{10})
Output: (mersen.out)
  • Ghi số Mersenne lớn nhất nhưng nhỏ hơn n tìm được
Subtasks
  • Subtask 1 (40\%): n\le 10^5
  • Subtask 2 (40\%): n\le 10^9
  • Subtask 3 (20\%): Không có ràng buộc gì thêm

Sample 1

Input (mersen.inp)
4
Output (mersen.out)
3
Note

Ta có: 3=2^2-1 và 3,2 đều là số nguyên tố. Do đó, 3 là số Mersenne lớn nhất nhưng nhỏ hơn 4

Sample 2

Input (mersen.inp)
9
Output (mersen.out)
7
Note

Ta có: 7=2^3-1 và 7,3 đều là số nguyên tố. Do đó, 7 là số Mersenne lớn nhất nhưng nhỏ hơn 9

Dãy con (HSG9 NB 2023)

Sunlight

Cho dãy số nguyên A gồm n số nguyên (a_1, a_2, ..., a_n). Một dãy con liên tiếp của A là một dãy con gồm các phần tử liên tiếp nhau trong dãy A.

Yêu cầu: Hãy tìm dãy con liên tiếp có tổng các phần tử lớn nhất.

Input, Output và Subtasks

Input: (daycon.inp)
  • Dòng đầu ghi số nguyên n (0<n\le 10^6)
  • Dòng thứ hai ghi n số nguyên a_1, a_2, ..., a_n (|a_i|\le 10^6, 1\le i\le n), mỗi số cách nhau một khoảng trắng
Output: (daycon.out)
  • Dòng đầu ghi tổng lớn nhất tìm được
  • Dòng thứ hai ghi ra các phần tử của dãy con liên tiếp tìm được (giữ nguyên theo thứ tự ban đầu trong A). Mỗi phần tử cách nhau một khoảng trắng. Nếu có nhiều dãy như thế thì in ra dãy xuất hiện đầu tiên
Subtasks
  • Subtask 1 (40\%): n\le 100
  • Subtask 2 (40\%): n\le 10^4
  • Subtask 3 (20\%): Không có ràng buộc gì thêm

Sample

Input (daycon.inp)
6
-2 3 -2 3 1 -2
Output (daycon.out)
5
3 -2 3 1
Note

Trong các dãy con liên tiếp thì dãy gồm các phần tử 3 -2 3 1 có tổng bằng 5 là lớn nhất

Văn nghệ (HSG9 NB 2023)

Sunlight

Trong một cuộc thi văn nghệ, có N thí sinh tham gia thi. Cuộc thi được tổ chức với nhiều vòng thi khác nhau. Mỗi vòng thi, thí sinh biểu diễn tốt nhất được N điểm, thí sinh tốt thứ nhì được N-1 điểm, thí sinh tốt thứ ba được N-2 điểm, ... thí sinh xếp cuối cùng được 1 điểm. Điểm chung cuộc của từng thí sinh là tổng điểm của thí sinh đó đạt được qua các vòng thi. Thí sinh nào có điểm chung cuộc cao nhất sẽ giành giải nhất. Nếu có nhiều thí sinh cùng đạt điểm chung cuộc cao nhất thì tất cả họ đều giành giải nhất.

Hiện nay, chỉ còn một vòng thi nữa là cuộc thi kết thúc, tổng điểm của các thí sinh đạt được đến vòng thi này lần lượt là a_1, a_2, ..., a_N

Yêu cầu: Có bao nhiêu thí sinh có cơ hội giành được giải nhất chung cuộc?

Input, Output và Subtasks

Input: (vannghe.inp)
  • Dòng đầu tiên chứa số nguyên N (3\le N\le 10^5) là số lượng thí sinh tham gia cuộc thi
  • N dòng tiếp theo, mỗi dòng ghi một số nguyên a_i (0<a_i\le 10^6, 1\le i\le N) là số điểm của thí sinh thứ i trước vòng thi cuối cùng
Output: (vannghe.out)
  • Dòng 1 ghi số lượng thí sinh có cơ hội giành được giải nhất chung cuộc
  • Dòng 2 ghi ra số thứ tự của các thí sinh có cơ hội giành được giải nhất chung cuộc theo thứ tự từ bé đến lớn, mỗi số cách nhau bởi một khoảng trắng
Subtasks
  • Subtask 1 (40\%): N\le 100
  • Subtask 2 (40\%): N\le 10^3
  • Subtask 3 (20\%): Không có ràng buộc gì thêm

Sample 1

Input (vannghe.inp)
4
9
11
8
12
Output (vannghe.out)
3
1 2 4
Note
  • Thí sinh thứ nhất có cơ hội giành được giải nhất nếu vòng thi cuối được 4 điểm; thí sinh thứ hai chỉ giành được 2 điểm, thí sinh thứ ba giành được 3 điểm và thí sinh thứ tư giành được 1 điểm. Khi đó thí sinh thứ nhất có điểm chung cuộc là 13 và giành giải nhất
  • Thí sinh thứ hai có cơ hội giành được giải nhất nếu đạt được 4 điểm ở vòng cuối cùng mà không cần quan tâm đến điểm ở vòng cuối của các thí sinh còn lại
  • Thí sinh thứ ba không còn cơ hội giành được giải nhất
  • Thí sinh thứ tư chỉ cần đạt được 3 hoặc 4 điểm ở vòng cuối là có cơ hội giành được giải nhất

Chữ số tận cùng (HSG9 QT 2023)

Sunlight

Chữ số tận cùng của một số là chữ số cuối cùng của nó. Ví dụ số 123 có chữ số tận cùng là 3, số 5 có chữ số tận cùng là 5.

Yêu cầu: Cho hai số nguyên dương A,N, hãy tìm chữ số tận cùng của A^N.

Input, Output và Subtasks

Input: (TANCUNG.inp)
  • Ghi 2 số nguyên dương A,N (1\le A,N\le 10^{18}). Các số viết cách nhau bởi dấu cách
Output: (TANCUNG.out)
  • Một số nguyên duy nhất là chữ số tận cùng tìm được
Subtasks
  • Subtask 1 (60\%): 1\le A,N\le 9
  • Subtask 2 (20\%): 1\le A,N\le 10^5
  • Subtask 3 (20\%): Không có ràng buộc gì thêm

Sample 1

Input (TANCUNG.inp)
2 10
Output (TANCUNG.out)
4
Note

2\cdot 2\cdot 2\cdot 2\cdot 2\cdot 2\cdot 2\cdot 2\cdot 2\cdot 2=1024

Sample 2

Input (TANCUNG.inp)
12 3
Output (TANCUNG.out)
8
Note

12\cdot 12\cdot 12=1728

Trọng số của xâu (HSG9 QT 2023)

Sunlight

Trọng số của một xâu S là trung bình cộng các chữ số trong xâu S đó. Nếu xâu S không có chữ số nào thì có trọng số là 0. Ví dụ xâu ab011c2 có trọng số là 1

Yêu cầu: Cho N xâu ký tự, hãy tìm xâu có trọng số lớn nhất. Nếu có nhiều xâu có trọng số bằng nhau thì ghi ra xâu đầu tiên tìm được, nếu không tìm thấy xâu có trọng số lớn nhất thì ghi 0.

Input, Output và Subtasks

Input: (TRONGSO.inp)
  • Dòng đầu ghi số nguyên N là số lượng xâu (1\le n\le 100)
  • N dòng tiếp theo, mỗi dòng ghi 1 xâu S (|S|\le 10^3, trong đó |S| là độ dài của xâu S)
Output: (TRONGSO.out)
  • Duy nhất 1 xâu kết quả tìm được
Subtasks
  • Subtask 1 (60\%): |S|\le 255
  • Subtask 2 (40\%): Không có ràng buộc gì thêm

Sample

Input (TRONGSO.inp)
3
aaaaaaa
10a3bb2021
100256
Output (TRONGSO.out)
100256
Note

1+0+0+2+5+6=14; 14/6=2.33 lớn nhất

Số đặc biệt (HSG9 QT 2023)

Sunlight

Một số nguyên dương X gọi là số đặc biệt nếu thỏa mãn hai điều kiện sau:

  • X là số nguyên tố
  • Số lượng chữ số chẵn và số lượng chữ số lẻ trong X là khác nhau

Yêu cầu: Cho một dãy số nguyên gồm N phần tử A_1, A_2, ..., A_N. Hãy đếm số lượng phần tử là số đặc biệt của dãy A

Input, Output và Subtasks

Input: (SODB.inp)
  • Dòng thứ nhất ghi số nguyên dương N
  • Dòng thứ hai chứa số nguyên A_1, A_2, ..., A_N. Các số viết cách nhau một dấu cách
Output: (SODB.out)
  • Một số nguyên duy nhất là số lượng số đặc biệt đếm được
Subtasks
  • Subtask 1 (60\%): 1\le N\le 300; 1\le A_i\le 5\cdot 10^4
  • Subtask 2 (20\%): 1\le N\le 300; |A_i|\le 10^{12}
  • Subtask 3 (20\%): 1\le N\le 2\cdot 10^6; |A_i|\le 2\cdot 10^6

Sample

Input (SODB.inp)
5
121 311 122 23 241
Output (SODB.out)
2
Note

Dãy A có 2 số đặc biệt là 311 và 241

Tổng bảng số (HSG9 QT 2023)

Sunlight

An thích học về bảng số. Bạn ấy tạo ra bảng số A có kích thước M\cdot N theo quy luật như sau:

  • Bảng có M dòng đánh số từ 1 đến M
  • Bảng có N cột đánh số từ 1 đến N
  • Tại vị trí dòng i và cột j trên bảng sẽ được ghi số (i-1)\cdot N+j nếu i+j là số chẵn, và ghi số 0 nếu i+j là số lẻ (1\le i\le M, 1\le j\le N)

Yêu cầu: Cho 2 số nguyên dương M, N. Hãy tính tổng tất cả các số được ghi trên bảng

Input, Output và Subtasks

Input: (TONGBANG.inp)
  • Ghi 2 số nguyên dương M, N (1\le M,N\le 10^9). Các số cách nhau bởi dấu cách
Output: (TONGBANG.out)
  • Một số nguyên duy nhất là tổng các số được ghi trên bảng số. Vì kết quả có thể rất lớn nên chỉ in ra đáp án sau khi chia lấy dư cho 1532023
Subtasks
  • Subtask 1 (60\%): 1\le M,N\le 500
  • Subtask 2 (20\%): 1\le M,N\le 10^5
  • Subtask 3 (20\%): Không có ràng buộc gì thêm

Sample 1

Input (TONGBANG.inp)
3 4
Output (TONGBANG.out)
38
Note

Bảng sẽ được tạo ra như sau:

1 0 3 0
0 6 0 8
9 0 11 0

Tổng: 1+3+6+8+9+11=38

Tìm ước chung lớn nhất (HSG9 VT 2023)

Sunlight

Cho một mảng A gồm N số nguyên dương: a_1, a_2, \dots, a_N

Yêu cầu: Hãy tìm hai số nguyên trong mảng A sao cho ước chung lớn nhất của 2 số đó là lớn nhất

Input và Output

Input: (CDIV.inp)
  • Dòng đầu tiên chứa số nguyên N (2\le N\le 2\cdot 10^5)
  • Dòng thứ hai chứa N số nguyên a_i, mỗi số cách nhau một ký tự trắng (1\le a_i\le 10^6)
Output: (CDIV.out)
  • Một số nguyên duy nhất là ước chung lớn nhất tìm được
Bonus

Bạn có thể giải bài toán này với N\le 10^6, a_i\le 10^7 ?

Subtasks
  • Subtask 1 (10\%): N\le 10.
  • Subtask 2 (15\%): N\le 2^{15}.
  • Subtask 3 (25\%): N\le 2\cdot 10^5.
  • Subtask 4 (50\%): Không có giới hạn gì thêm.

Sample

Input (CDIV.inp)
6
12 5 6 4 7 10
Output (CDIV.out)
6

Đố vui tin học (HSG9 VT 2023)

Sunlight

Để tổng kết phát thưởng cho cuộc thi Đố vui tin học, Ban tổ chức có N phần quà được đánh thứ tự từ 1 tới N, phần quà thứ i có giá trị a_i. Ban tổ chức yêu cầu học sinh chọn các phần quà theo quy tắc sau:

  • Phần quà chọn sau phải có số thứ tự lớn hơn phần quà chọn trước đó.
  • Phần quà chọn sau phải có giá trị lớn hơn phần quà chọn trước đó ít nhất K giá trị

Yêu cầu: Hãy giúp các bạn học sinh lựa chọn theo quy tắc ban tổ chức đặt ra sao cho số lượng phần quà được chọn là nhiều nhất

Input và Output

Input: (GIFT.inp)
  • Dòng đầu tiên chứa 2 số nguyên dương N và K cách nhau một ký tự trắng (N\le 10^4, K\le 10^3)
  • N dòng tiếp theo, dòng thứ i chứa số nguyên dương a_i (a_i\le 10^6) là giá trị của phần quà thứ i
Output: (GIFT.out)
  • Một dòng duy nhất chứa số lượng phần quà nhiều nhất thỏa mãn yêu cầu
Bonus

Bạn có thể giải bài toán này với N\le 10^6 ?

Subtasks
  • Subtask 1 (10\%): N\le 20.
  • Subtask 2 (30\%): N\le 10^4.
  • Subtask 3 (30\%): N\le 10^5.
  • Subtask 4 (30\%): Không có giới hạn gì thêm.

Sample

Input (GIFT.inp)
5 2
4
5
6
4
8
Output (GIFT.out)
3