Глиф Учебники

Быстрый ввод-вывод

Справочник · C++ · 2 минуты чтения

Две строки в начале main ускоряют cin и cout в несколько раз:

C++
#include <iostream>
using namespace std;

int main() {
    ios::sync_with_stdio(false);
    cin.tie(nullptr);

    int n;
    cin >> n;
    long long sum = 0;
    for (int i = 0; i < n; i++) {
        int x;
        cin >> x;
        sum += x;
    }
    cout << sum << "\n";
    return 0;
}
Ввод
5
10 20 30 40 50
Вывод
150

И третье правило: переводите строку через "\n", а не через endl.

На олимпиадах это важно, когда во входных данных сотни тысяч чисел и больше: без этих строк решение с верным алгоритмом может не уложиться в ограничение по времени (Time Limit).

Что делают эти строки

Обе строки ставятся в самом начале main, до первого ввода или вывода.

Подводные камни

После ios::sync_with_stdio(false) нельзя смешивать cin/cout со scanf/printf (и с puts, getchar). Порядок вывода перепутается, а ввод может прочитать не те данные. Выберите что-то одно.

А если всё равно медленно

Если в программе уже есть эти строки, а время всё равно превышено, дело почти всегда в алгоритме: проверьте, сколько действий он делает. Два вложенных цикла по 10⁵ — это 10¹⁰ операций, и никакой быстрый ввод их не спасёт.