From 2f674dc80f0382f1c3178f435714960734dc9d3c Mon Sep 17 00:00:00 2001 From: Nguyễn Gia Phong Date: Sat, 6 Jun 2020 21:33:13 +0700 Subject: Reorganize stuff from secondary school --- 12/QG-2007/README.md | 43 ------------------------------------------- 12/QG-2007/maxiseq.c | 36 ------------------------------------ 2 files changed, 79 deletions(-) delete mode 100644 12/QG-2007/README.md delete mode 100644 12/QG-2007/maxiseq.c (limited to '12/QG-2007') diff --git a/12/QG-2007/README.md b/12/QG-2007/README.md deleted file mode 100644 index d32a8be..0000000 --- a/12/QG-2007/README.md +++ /dev/null @@ -1,43 +0,0 @@ -# KÌ THI CHỌN HỌC SINH GIỎI QUỐC GIA THPT NĂM 2007 - -## Dãy con không giảm dài nhất - -Cho dãy số nguyên dương a1, a2, …, an. - -Dãy số ai, ai+1, …, aj thỏa mãn ai -≤ ai+1 ≤ … ≤ aj với 1 ≤ i ≤ j ≤ n được gọi là dãy con -không giảm của dãy số đã cho và khi đó số j - i + 1 được gọi là độ dài của dãy -con này. - -### Yêu cầu - -Hãy tìm dãy con có độ dài lớn nhất trong số các dãy con không giảm của dãy số -đã cho mà các phần tử của nó đều thuộc dãy số (uk) xác định bởi: - -* u1 = 1; -* uk = uk-1 + k (k ≥ 2). - -### Dữ liệu - -* Dòng đầu tiên chứa một số nguyên dương n (n ≤ 10000); -* Dòng thứ i trong n dòng tiếp theo chứa một số nguyên dương ai là - số hạng thứ i của dãy số đã cho (ai ≤ 108, i = 1, 2, …, - n). - -### Kết quả - -Số nguyên d là độ dài của dãy con không giảm tìm được (quy ước rằng nếu không -có dãy con nào thỏa mãn điều kiện đặt ra thì d = 0). - -### Ví dụ - -| MAXISEQ.INP | MAXISEQ.OUT | -| ----------------------------------------------- | :---------: | -| 8
2
2007
6
6
15
16
3
21 | 3 | - -#### Giải thích - -Các dãy con không giảm của dãy số đã cho mà các phần tử của nó đều thuộc dãy -(uk) là: 6, 6, 15 và 3, 21 (vì u2 = 3, u3 = 6, -u5 = 15, u6 = 21). Dãy cần tìm là 6, 6, 15 có độ dài là -3. diff --git a/12/QG-2007/maxiseq.c b/12/QG-2007/maxiseq.c deleted file mode 100644 index 94c15c8..0000000 --- a/12/QG-2007/maxiseq.c +++ /dev/null @@ -1,36 +0,0 @@ -#include -#include - -char is_in_u(long x) -{ - long y = (long) sqrt(x *= 2); - return y * (y + 1) == x; -} - -int main() -{ - FILE *f = fopen("MAXISEQ.INP", "r"); - short n, i, max = 0, start = -1; - long a, b; - - fscanf(f, "%hd\n", &n); - for (i = 0; i < n; i++) { - b = a; - fscanf(f, "%ld\n", &a); - if (!is_in_u(a) || start >= 0 && b > a) { - start = -1; - continue; - } - if (start < 0) - start = i; - if (i - start >= max) - max = i - start + 1; - } - fclose(f); - - f = fopen("MAXISEQ.OUT", "w"); - fprintf(f, "%hd\n", max); - fclose(f); - - return 0; -} -- cgit 1.4.1