вторник, 21 марта 2023 г.

c++ set

 

http://kytok.org.ua/post/std-set-u-cplusplus


#include <iostream>

#include <set>
using namespace std;
 
int main()
{
    // declaration of set container
    set<int> myset{ 1, 2, 3, 4, 5 };
 
    // using begin() to print set
    for (auto it = myset.begin(); it !=
                             myset.end(); ++it)
        cout << ' ' << *it;
    return 0;
}

2661

#include <iostream> #include <set> using namespace std; set<int> s; int main () { int n,i,k,t; cin>>n; for (i=0;i<n;i++) { cin>>k; s.insert(k); } cin>>n; for (i=0;i<n;i++) { cin>>k; s.insert(k); } for(auto it = s.begin(); it != s.end(); it++) cout<<*it<<" "; return 0; }

2927

#include <iostream> #include <set> using namespace std; set<int> s; int main () { int n,i,k,j,x; cin>>n; for (i=0;i<n;i++) { cin>>k; for (j=0;j<k;j++) { cin>>x; s.insert(x); } } cout<<s.size(); return 0; }

5337

#include <iostream> #include <set> using namespace std; set<int> s; int main () { int r,i,t; cin>>r; for (i=0;i<r;i++) { cin>>t; s.insert(t); } cout<<s.size(); return 0; }

5089

#include <iostream> #include <set> using namespace std; int main () { set<string> s; int i,n; string str; cin >> n; for (i = 0; i < n; i++) { cin >> str; s.insert(str); } for (string str : s) cout << str << endl; return 0; }


В языке C++ контейнер set позволяет работать с различными множествами. Под множеством в данном случае понимают некоторое количество отсортированных элементов. Использование  в файле set требует подключения

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

После добавлений  мы получим 2 множества S = (1, 2)  и mS = (1, 2, 2). Вместо insert можно использовать функцию emplace, которая перед добавлением проверяет, есть ли уже такой элемент, и если нет, то добавляет его.

Set является контейнером, так что имеет все стандартные для контейнера функции:

- Работа с элементами set:

  • S.swap(S2) - меняет содержимое контейнеров местами,
  • S.insert(a) - вставка элемента a,
  • S.erase(S2) - удаляет последовательность элементов,
  • S.clear() - очистка контейнера set,
  • S.count() - количество элементов в контейнере,
  • S.find(a) - найти элемент a в контейнере,
  • S.lower_bound(a) - первый элемент, не меньший чем a,
  • S.upper_bound(a) - первый элемент, больший чем a,
  • S.equal_range(a) - пара элементов, первый - нижняя граница элементов с, такими же значениями, что и a, второй - верхняя граница элементов с такими же значениями, что и a.

- Работа с памятью:

  • S.size() - размер контейнера,
  • S.max_size() - максимальный размер контейнера.

- Работа с контейнером:

  • S.begin() - указатель на начало контейнера,
  • S.end() - указатель на конец контейнера,
  • S.rbegin() - реверсивный указатель на конец контейнера,
  • S.rend() - реверсивный указатель на начало контейнера.

вторник, 7 марта 2023 г.

C++

 9982


Задано натуральне число n. Вивести квадратну матрицю розміром n x n, заповнену цілими числами від 0 до (n-1), як показано в прикладі.

Вхідні дані

Натуральне число n1 ≤ n ≤ 10

Вихідні дані

Вивести матрицю розміром n x n, як у прикладі.

9983

Матриця 2

Задано натуральне число n. Вивести квадратну матрицю розміром n x n, заповнену цілими числами 0 або 1, як показано в прикладі.

Вхідні дані

Натуральне число n1 ≤ n ≤ 10

Вихідні дані

Вивести матрицю розміром n x n, як у прикладі.



10913

10164

Подорож

Козак Вус хоче дібратися з Києва у Кременчук. Відомо, що потяг з Києва у Кременчук коштує  гривень. Потяг з Києва у Харків коштує  гривень, а потяг з Харкова у Кременчук  гривень.
Знайдіть мінімальну кількість гривень, які Козаку Вусу потрібно заплатити, щоб дібратися у Кременчук, можливо, через Харків.

Вхідні дані

Перший рядок містить три цілі числа  ().

Вихідні дані

Виведіть одне ціле число — мінімальну вартість.

10609

Первый элемент встречающийся k раз в массиве

Задан массив n целых чисел. Найдите первый элемент, который встречается k раз. Если никакой элемент не встречается k раз, то выведите -1.

Входные данные

Первая строка содержит два натуральных числа n и k (nk ≤ 105). Вторая строка содержит n целых чисел, каждое по модулю не больше 109.

Выходные данные

Выведите первый элемент, который встречается k раз. Если никакой элемент не встречается k раз, то выведите -1.