Я пытался решить проблему конкуренции в стиле ссылки ниже, используя c ++ (реальная проблема, которую я пытаюсь решить, недоступна для общественности)
http://orac.amt.edu.au/cgi-bin/train/problem.pl?set=aio18int&problemid=1032
Я написал программу на C ++ в Visual Studio, которая пытается решить ее, но когда я запускаю этот код: (есть некоторые включения для, но я не смог получить форматирование).
int main()
{
int n = 1;
freopen("pairin.txt", "r", stdin);
scanf("%d", &n);
int s[200005];
for (int i = 0; i < 2 * n; i++)
{
scanf("%d", &s[i]);
}
int d[100005];
for (int i = 0; i < n; i++) {
d[i] = -1;
}
for (int i = 0; i < n; i++) {
if (d[s[i] - 1] == -1) {
d[i] == s[i];
}
else {
d[i] = i - d[i];
}
}
int max = 0;
for (int i = 0; i < n; i++) {
if (d[i] > max) {
max = d[i];
}
}
freopen("pairout.txt", "w", stdout);
printf("%d", max);
return 0;
}
Возвращает ошибку: необработанное исключение в 0x00B11CC9 в a.exe: 0xC00000FD: переполнение стека (параметры: 0x00000000, 0x00402000).Произошло
Затем Visual Studio по какой-то причине открывает вкладку в asm-файле chkstk.asm.
У меня есть представление о том, когда эта ошибка возникает нормально, но что, по-видимому, ее вызываетопределял "int n = 1;"когда я вошел с отладчиком, который абсолютно поражает мой разум.Все, что я хочу сделать, это отладить мой алгоритм, не пытаясь получить int n = 1;на работу.
Я использую Visual Studio 2017, с включенным флагом _CRT_SECURE_NO_WARNINGS.
Я пытался это сделать в онлайн-среде IDE (закомментировав все строки ввода-вывода), и main () вернул 0просто отлично.