Memiory limit exeeded в задаче codeforces

Задача такая: https://codeforces.com/edu/course/2/lesson/3/1/practice/contest/272260/problem/C

Мое решение

#include <bits/stdc++.h>

using namespace std;

#define sp ' '
#define nl '\n'
#define IOS ios_base::sync_with_stdio(false); cin.tie(NULL)

int main()
{
    IOS;
    int q; cin >> q;
    while(q--)
    {
        string t, p; 
        cin >> t;
        cin >> p;
        int cnt = 0;
        vector<int> idx;
        
        for(int i = 0; i < t.length() - p.length() + 1; i++)
        {
            bool is_fit = true;
            for(int j = 0; j < p.length(); j++)
            {
                if(i+j < t.length() && p[j] != '?' && t[i + j] != p[j])
                {
                    is_fit = false;
                    break;
                }
            }
            if(is_fit)
            {
                idx.push_back(i);
                cnt++;
            }
        }

        cout << cnt << nl;
        if(idx.empty()) cout << nl;
        else{
            for (int i : idx)
                cout << i << sp;
            cout << nl;
        }
        
    }
    return 0;
}

На 4 тесте выдает превышение ограничения по памяти и как-будто программа использовала >512 Мб памяти. Не понимаю почему так происходит, ведь максимально в векторе может быть 50000 индексов типа int(исходя из условия задачи), плюсом вектор в конце каждой итерации цикла while уничтожается. Буду благодарен, если объясните почему так происходит.


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