Отвечу, как один из участников олимпиадного программирования.
Вообще нюансов много. Библиотеки, которые нужны больше всего и которые использую я:
#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, только сортирует элементы по возрастанию.