Ответы пользователя по тегу C++
  • Как использовать библиотеку bits/stdc++ для олимпиадного программирования?

    @AleexF
    Файл MinGW\lib\gcc\mingw32\4.9.2\include\c++\mingw32\bits\stdc++.h
    // C
    #ifndef _GLIBCXX_NO_ASSERT
    #include <cassert>
    #endif
    #include <cctype>
    #include <cerrno>
    #include <cfloat>
    #include <ciso646>
    #include <climits>
    #include <clocale>
    #include <cmath>
    #include <csetjmp>
    #include <csignal>
    #include <cstdarg>
    #include <cstddef>
    #include <cstdio>
    #include <cstdlib>
    #include <cstring>
    #include <ctime>
    
    #if __cplusplus >= 201103L
    #include <ccomplex>
    #include <cfenv>
    #include <cinttypes>
    #include <cstdalign>
    #include <cstdbool>
    #include <cstdint>
    #include <ctgmath>
    #include <cwchar>
    #include <cwctype>
    #endif
    
    // C++
    #include <algorithm>
    #include <bitset>
    #include <complex>
    #include <deque>
    #include <exception>
    #include <fstream>
    #include <functional>
    #include <iomanip>
    #include <ios>
    #include <iosfwd>
    #include <iostream>
    #include <istream>
    #include <iterator>
    #include <limits>
    #include <list>
    #include <locale>
    #include <map>
    #include <memory>
    #include <new>
    #include <numeric>
    #include <ostream>
    #include <queue>
    #include <set>
    #include <sstream>
    #include <stack>
    #include <stdexcept>
    #include <streambuf>
    #include <string>
    #include <typeinfo>
    #include <utility>
    #include <valarray>
    #include <vector>
    
    #if __cplusplus >= 201103L
    #include <array>
    #include <atomic>
    #include <chrono>
    #include <condition_variable>
    #include <forward_list>
    #include <future>
    #include <initializer_list>
    #include <mutex>
    #include <random>
    #include <ratio>
    #include <regex>
    #include <scoped_allocator>
    #include <system_error>
    #include <thread>
    #include <tuple>
    #include <typeindex>
    #include <type_traits>
    #include <unordered_map>
    #include <unordered_set>
    #endif
    Ответ написан
    Комментировать
  • Какие библиотеки, встроенные функции и контейнеры можно использовать в олимпиадном программировании?

    @AleexF
    Отвечу, как один из участников олимпиадного программирования.
    Вообще нюансов много. Библиотеки, которые нужны больше всего и которые использую я:
    #include <algorithm>
    #include <iostream>
    #include <memory.h>
    #include <iterator>
    #include <cassert>
    #include <fstream>
    #include <cstdlib>
    #include <vector>
    #include <cstdio>
    #include <string>
    #include <queue>
    #include <deque>
    #include <cmath>
    #include <ctime>
    #include <stack>
    #include <set>
    #include <map>

    Не советую использовать библиотеку #include <bits/stdc++.h> Т.к. бывают старые компиляторы(ver < 5.0), которые не включают её в себя, но иметь ввиду стоит. Эта библиотека включает в себя все, описанные выше и даже больше! Из контейнеров есть:
    queue <TYPENAME> - Очередь(Подробнее) Умеет узнавать первый элемент очереди, добавлять в конец, удалять из начала за О(1).
    deque <TYPENAME> - Модификация очереди ( Подробнее (cppstudio.com/post/8469 )) Тоже самое, но умеет добавлять и удалять с обоих концов.
    stack <TYPENAME> - Контейнер.(Подробнее) Умеет добавлять в начало и доставать из начала элемент.
    priority_queue <TYPENAME> - Модификация очереди(Годного описания не нашёл). Как set, только сортирует элементы по возрастанию.
    Ответ написан
    Комментировать
  • Как разбить число на элементы массива в с++?

    @AleexF
    То, что вы хотите сделать:
    #include <iostream>
    using namespace std;
    
    const int N = (int)1e5+1;
    
    string s;
    int a[N];
    
    int main()
    {
        cin >> s;
        int idx = 0;
        for (int i = 0; i < s.length(); i++) {
            a[idx] = s[i] - '0';
            idx++;
        }
        for (int i = 0; i < idx; i++) {
            cout << a[i] << ' ';
        }
        return 0;
    }

    Вариант покороче:
    #include <iostream>
    using namespace std;
    
    const int N = (int)1e5+1;
    
    string s;
    int a[N];
    
    int main()
    {
        cin >> s;
        int idx = 0;
        for (int i = 0; i < s.length(); i++) a[idx++] = s[i] - '0';
        for (int i = 0; i < idx; i++) cout << a[i] << ' ';
        return 0;
    }

    Вариант с векторами:
    #include <iostream>
    using namespace std;
    
    const int N = (int)1e5+1;
    
    string s;
    vector <int> a[N];
    
    int main()
    {
        cin >> s;
        for (int i = 0; i < s.length(); i++) a.push_back(s[i] - '0');
        for (int i = 0; i < a.size(); i++) cout << a[i] << ' ';
        return 0;
    }
    Ответ написан