Список вопросов
Как зайти в Даркнет?!
25th January, 01:11
4
0
Как в tkinter из поля ввода Entry получить значение в одну переменную и обновить строку кнопкой, затем получить ещё одно введённое значение и затем сложить их. Ниже пример кода
21st July, 19:00
891
0
Программа, которая создает фейковые сервера в поиске игровых серверов CS 1.6 Steam
21st March, 17:43
946
0
Очень долго работает Update запрос Oracle
27th January, 09:58
912
0
не могу запустить сервер на tomcat HTTP Status 404 – Not Found
21st January, 18:02
905
0
Где можно найти фрилансера для выполнения поступающих задач, на постоянной основе?
2nd December, 09:48
936
0
Разработка мобильной кроссплатформенной военной игры
16th July, 17:57
1723
0
период по дням
25th October, 10:44
3954
0
Пишу скрипты для BAS только на запросах
16th September, 02:42
3720
0
Некорректный скрипт для закрытия блока
14th April, 18:33
4613
0
прокидывать exception в блоках try-catch JAVA
11th March, 21:11
4380
0
Помогите пожалуйста решить задачи
24th November, 23:53
6084
0
Не понимаю почему не открывается детальное описание продукта
11th November, 11:51
4350
0
Нужно решить задачу по программированию на массивы
27th October, 18:01
4394
0
Метода Крамера С++
23rd October, 11:55
4308
0
помогите решить задачу на C++
22nd October, 17:31
4002
0
Помогите решить задачу на python с codeforces
22nd October, 11:11
4492
0
Python с нуля: полное руководство для начинающих
18th June, 13:58
2598
0
Решение задачи Последовательность - 2 с Acmp
Без пояснения   Просмотров: 1751
Вася написал на доске n целых чисел ai и ушел. Пришел Петя и, увидев Васину последовательность, решил ее немного изменить. Для этого он решил, что может стирать с доски лишь те числа, у которых имеются слева и справа элементы, превосходящие их. Формально, Петя может стереть число ak, если существуют значения ai и aj такие, что ai > ak и aj > ak и i < k < j. Когда на доске не осталось чисел, которые мог стереть Петя, он ушел.
Пришел Вася и очень удивился увиденному. Напишите программу, которая выводит последовательность, которую увидел Вася.
Пришел Вася и очень удивился увиденному. Напишите программу, которая выводит последовательность, которую увидел Вася.
Код
#include using namespace std; int main() { bool f = false, temp = false; int n, jj, t; cin >> n; vector b; vector a; vector aa; vector cc; for(int i = 0; i < n; ++i){ cin >> t; b.push_back(t); a.push_back(t); } sort(b.begin(), b.end()); for(int i = 0; i < b.size(); ++i) if(b[i] != a[i]){ f = true; break; } if(!f){ cout << a.size() << endl; for(int i = 0; i < a.size(); ++i) cout << a[i] << " "; return 0; } f = false; reverse(b.begin(),b.end()); for(int i = 0; i < a.size(); ++i) if(b[i] != a[i]){ f = true; break; } if(!f){ cout << a.size() << endl; for(int i = 0; i < a.size(); ++i) cout << a[i] << " "; return 0; } f = false; b.clear(); for(int i = 0; i < a.size() - 1; ++i){ for(int j = i + 1; j < a.size(); ++j){ if(a[i] <= a[j]){ b.push_back(a[i]); if(b.size() > 1) b.pop_back(); b.push_back(a[j]); i = j; } if(j == a.size() - 1 && a[j] < a[i]) f = true; } if(f){ jj = i; temp = true; break; } } if(!b.size() && jj == 0) b.push_back(a[0]); for(int i = 0; i < b.size(); ++i) cc.push_back(b[i]); b.clear(); if(temp){ temp = false; for(int i = jj; i < a.size(); ++i) aa.push_back(a[i]); reverse(aa.begin(),aa.end()); f = false; for(int i = 0; i < aa.size() - 1; ++i){ for(int j = i + 1; j < aa.size(); ++j){ if(aa[i] <= aa[j]){ b.push_back(aa[i]); if(b.size() > 1) b.pop_back(); b.push_back(aa[j]); i = j ; } if(j == aa.size() - 1 && aa[j] < aa[i]) f = true; } if(f) break; } } if(b.size()){ b.pop_back(); for(int i = b.size() - 1; i >= 0; --i) cc.push_back(b[i]); } cout <
 
 
 
 
 
Автор: Администратор
Автор: Администратор
Комментарии
info@mycod.net  
Карта сайта  
Правообладателям
Заявка на расчет
×
или напишите нам прямо сейчас: