Ошибка сегментации еще до начала выполнения - PullRequest
0 голосов
/ 20 января 2020

Я написал этот код вчера, во время живого конкурса на codeforces, и он вызывает ошибку сегментации еще до выполнения первой строки в main (). Программа даже не печатала «тест»

#include <bits/stdc++.h>
using namespace std;

int main () {
    cout << "test";
    int t;
    cin >> t;
    while (t--) {
        int n, s, k, ans = 0;
        cin >> n >> s >> k;
        int arr[n+1];
        memset(arr, 0, sizeof arr);
        for (int i = 0; i < k; i++) {
            cin >> t;
            arr[t] = 1;
        }
        int i = 0;
        while (true) {//cout<<"test";
            if (s+i <= n && arr[s+i] == 0) break;
            if (s-i > 0 && arr[s-i] == 0) break;
            if (s-i <= 0 && s+i > n) break;
            i++;
        }
        cout << i << endl;
    }
    return 0;
}

1 Ответ

3 голосов
/ 20 января 2020

Ваша программа не печатает "test", потому что вам нужно flu sh stdout . Если вы не выполните команду sh, SO сохранит этот текст в буфере и может подождать подходящий момент для его вывода. Вместо этого заставьте SO распечатать его, используя:

cout << "test" << std::endl;

или

flush(stdout);
...