Почему не получается задача на степике? Как исправить ошибку

https://stepik.org/lesson/13025/step/16?unit=4377 вот ссылка на задачу

#include <iostream>
#include <string>
#include <vector>

using namespace std;

int main()
{
    int N = 0, K = 0, b = 0, c = 0;

    cin >> N >> K;

    string a[N];
    for (int i = 1; i <= N; i++)
    {
        a[i] = "I";
    }

    cin >> b;
    cin >> c;

    for (int j = 1; j <= K; j++)
    {
        for (int p = b; p <= c; p++)
        {
            a[p - 1] = ".";
        }
        cin >> b;
        cin >> c;
    }

    for (auto now : a)
    {
        cout << now;
    }

    return 0;
}

Ошибка: *** Error in `./main': free(): invalid pointer: 0x00007ffdef97e480 *** ======= Backtrace: ========= [0x4ada47] [0x4b32d2] [0x4b3aee] [0x418e90] [0x419b3b] [0x4006fe] [0x496a03] [0x496dc2] [0x4011aa] ======= Memory map: ======== 00400000-00583000 r-xp 00000000 fe:01 3430388 /sandbox/main 00782000-0078b000 rw-p 00182000 fe:01 3430388 /sandbox/main 0078b000-00790000 rw-p 00000000 00:00 0 01140000-01163000 rw-p 00000000 00:00 0 [heap] 7f6e4c000000-7f6e4c029000 rw-p 00000000 00:00 0 7f6e4c029000-7f6e50000000 ---p 00000000 00:00 0 7f6e511a3000-7f6e511a4000 rw-p 00000000 00:00 0 7ffdef95e000-7ffdef97f000 rw-p 00000000 00:00 0 [stack] 7ffdef98d000-7ffdef990000 r--p 00000000 00:00 0 [vvar] 7ffdef990000-7ffdef992000 r-xp 00000000 00:00 0 [vdso] ffffffffff600000-ffffffffff601000 r-xp 00000000 00:00 0 [vsyscall] Aborted (core dumped)


Ответы (1 шт):

Автор решения: Harry
string a[N];
for (int i = 1; i <= N; i++)
{
    a[i] = "I";
}

Если вспомнить, что элементы массива нумеруются с нулевого, то последнее присваивание в цикле — a[N] = "I"; — пишет в память за рамками выделенного массива, что приводит к неопределенному поведению...

В цикле ниже — та же ошибка.

→ Ссылка