В
Все
М
Математика
А
Английский язык
Х
Химия
Э
Экономика
П
Право
И
Информатика
У
Українська мова
Қ
Қазақ тiлi
О
ОБЖ
Н
Немецкий язык
Б
Беларуская мова
У
Українська література
М
Музыка
П
Психология
А
Алгебра
Л
Литература
Б
Биология
М
МХК
О
Окружающий мир
О
Обществознание
И
История
Г
Геометрия
Ф
Французский язык
Ф
Физика
Д
Другие предметы
Р
Русский язык
Г
География
kublahan
kublahan
08.01.2021 17:31 •  Информатика

D3. фанатам стратегий 3 (5 )

данный шаг отличается от предыдущего формулировкой ограничений на входные данные и примером. перед проверкой решения с формулировкой ограничений из этого шага, убедитесь, что это решение проходит и на предыдущем шаге.

к добавлено примечание!

вскоре стало понятно, что всё совсем не просто. нельзя взять и построить здание. их в этой игре ещё и открыть нужно.

новое здание типа a можно построить, только если на нашей базе функционирует хотя бы по одному новому зданию из списка необходимых зданий здания типа a.

сколько на самом деле нам придётся построить зданий (не считая электростанций)? какие они? в каком порядке их строить? ваша – найти ответы на эти вопросы.

примечание

гарантируется, что существует такая последовательность постройки зданий, что здания всех типов можно построить.

формат входных данных

в первой строке записаны три целых числа n, m и t (1≤m≤n≤1000; 1≤t≤2) – количество различных типов новых зданий в игре, количество новых зданий, которые нужно построить, и номер формата выходных данных.

в следующей строке записаны m названий типов зданий, разделённых пробелами – требуемые для обеспечения устойчивой обороны здания. гарантируется, что строка не содержит одинаковых типов зданий.

далее идёт n блоков по 2 строки следующего вида:

в первой строке – название типа здания.

во второй – длина списка необходимых зданий для здания данного типа и сам список необходимых зданий. гарантируется, что список не содержит одинаковых типов зданий.

сумма длин списков необходимых зданий не превышает 5⋅104.

название каждого типа здания состоит только из латинских букв и имеет длину не более десяти символов.

формат выходных данных

если t=1, то выведите одно число – минимальное количество зданий, которые нужно построить.

если t=2, то в первой строке выведите одно число – минимальное количество зданий, которое необходимо построить, а во второй – k названий зданий, которые нужно построить, в том порядке, в котором их нужно строить. если существует несколько подходящих последовательностей – выведите любую из них.

sample input:

13 5 2
refinery vehicle repair palace turret
constryard
0
windtrap
1 constryard
refinery
1 windtrap
outpost
1 windtrap
silo
2 refinery constryard
vehicle
3 refinery windtrap outpost
barracks
2 constryard outpost
wall
1 outpost
turret
1 outpost
starport
2 silo refinery
repair
1 vehicle
hitech
3 vehicle wall outpost
palace
1 starport
sample output:

10
constryard windtrap refinery outpost silo vehicle turret starport repair palace
напишите программу. тестируется через stdin → stdout
time limit: 3 секунды
memory limit: 256 mb

Показать ответ
Ответ:
диана2470
диана2470
15.04.2023 15:41

#include <iostream>

#include <vector>

using namespace std;

void insertionSort(vector<int> &a_){

   vector<int> t;

   int n = a_.size();

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

       int u = i;

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

           if(a_[j] < a_[u])

               u = j;

       swap(a_[i], a_[u]);

       if(!(a_[i] & 1))

           t.push_back(a_[i]);

   }

   a_ = t;

}

void solve(){

   vector<int> a = {-2, 4, 10, -1, 1, 6, 3, 7, 8, 5};

   insertionSort(a);

   cout << "a = {";

   for(int i = 0; i < a.size() - 1; i++)

       cout << a[i] << ", ";

   cout << a.back() << "}";

}

int main(){

   solve();

}

0,0(0 оценок)
Ответ:
Ученик2017gmailcom
Ученик2017gmailcom
08.02.2022 05:14

#include <iostream>

#include <vector>

using namespace std;

void bubbleSort(vector<int> &a_){

   vector<int> t;

   int n = a_.size();

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

       for(int j = 0; j < n - i - 1; j++)

           if(a_[j] > a_[j + 1])

               swap(a_[j], a_[j + 1]);

   for(auto &i: a_) if(i & 1) t.push_back(i);

   a_ = t;

}

void solve(){

   vector<int> a = {2, 10, 5, 3, 11, 9, 12};

   bubbleSort(a);

   cout << "a = {";

   for(int i = 0; i < a.size() - 1; i++)

       cout << a[i] << ", ";

   cout << a.back() << "}";

}

int main(){

   solve();

}

0,0(0 оценок)
Популярные вопросы: Информатика
Полный доступ
Позволит учиться лучше и быстрее. Неограниченный доступ к базе и ответам от экспертов и ai-bota Оформи подписку
logo
Начни делиться знаниями
Вход Регистрация
Что ты хочешь узнать?
Спроси ai-бота