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 уничтожается. Буду благодарен, если объясните почему так происходит.