Районная олимпиада по информатике. 2016-2017 учебный год.


Задача F. Массив

Ограничение по времени:
2 секунда
Ограничение по памяти:
64 мегабайта

Вам дан массив $A$ длины $n$. Вы можете удалить некоторые элементы из него, при этом после всех удалении элементы должны стоять в строго возрастающем порядке. Выведите максимальную возможную длину массива после всех удалении.
Формат входного файла
Первая строка входного файла содержит целое число $N$ $(1 \le N \le 1000000)$ — длину последовательности. Вторая строка входного файла содержит $N$ целых чисел — элементы последовательности $A.$ Все элементы последовательности не превосходят 1000000000 по абсолютному значению.
Формат выходного файла
Выведите ответ к задаче.
Примеры:
Вход
4
4 1 2 3 
Ответ
3
Замечание
Необходимо удалить 4, тогда результирующий массив будет 1 2 3.
посмотреть в олимпиаде

Комментарий/решение:

пред. Правка 2   0
2018-11-20 11:58:27.0 #

asd

  0
2019-05-27 21:44:22.0 #

показать/скрыть код

пред. Правка 2   1
2019-05-27 21:45:05.0 #

  0
2019-12-02 10:33:43.0 #

Но ведь работает же :)

показать/скрыть код

  0
2022-09-18 21:36:39.0 #

#include <iostream>

using namespace std;

int main(){

int n;

cin >> n;

int arr[n];

int res[n];

res[0] = arr[0];

for (int i = 0; i < n; i++) {

cin >> arr[i];

}

int j = 0;

for (int i = 1; i < n; i++) {

if (arr[i] < res[j]) {

res[j] = arr[i];

} else {

res[++j] = arr[i];

}

}

cout << j + 1;

}

  0
2022-09-18 21:37:41.0 #

показать/скрыть код

#include <iostream>

using namespace std;

int main(){

int n;

cin >> n;

int arr[n];

int res[n];

res[0] = arr[0];

for (int i = 0; i < n; i++) {

cin >> arr[i];

}

int j = 0;

for (int i = 1; i < n; i++) {

if (arr[i] < res[j]) {

res[j] = arr[i];

} else {

res[++j] = arr[i];

}

}

cout << j + 1;

}

  1
2022-09-18 21:40:38.0 #

показать/скрыть код