Aiuto per il problema Cesitini

Buongiorno, stavo cercando di risolvere il problema “Cestini” di algobadge e, nonostante il procedimento logico mi sembra corretto, il codice va in segmentation fault. Ho provato a risolvere con alcune sottigliezze ma la situazione non cambia. Qualcuno saprebbe aiutarmi? Grazie!
Ecco il mio codice:

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

#define MAXM  5000001


using namespace std;

vector<vector<char>>cestini(MAXM);

void solve(int t) {
    
    int N, M, Q;
    cin >> N >> M >> Q;

    string S;
    cin >> S;

    for(int i = 0; i<MAXM;i++){
        cestini[i].clear();
    }

    for(int i =0; i<N; i++){
        cestini[0].push_back(S[i]);
    }
    
    string risposta;
    
    for (int i = 0; i < Q; i++) {
        char type;
        int a, b;
        cin >> type >> a >> b;

        if (type == 's') {
            cestini[b].emplace_back(cestini[a].back());
            cestini[a].pop_back();
            
           

        } else {
            risposta.push_back(cestini[a][b]);
        }
    }
    

    cout << "Case #" << t << ": " << risposta << "\n";
    
}

int main() {
    ios::sync_with_stdio(false);
    cin.tie(nullptr);
    // se preferisci leggere e scrivere da file
    // ti basta decommentare le seguenti due righe:

    freopen("input.txt", "r", stdin);
     freopen("output.txt", "w", stdout);

    int T;
    cin >> T;

    for (int t = 1; t <= T; t++) {
        solve(t);
    }

    return 0;
}

Sono abbastanza confuso perché ho appena preso AC con il tuo codice.
Potrebbe causare problemi è la lettura dell’input:

Il programma cerca di leggere da “input.txt” mentre il file che scarichi dal sito si chiama “cestini_input_x.txt” dove x è il numero dell’input che hai scaricato. Chiaramente basta rinominare il file.
Non sono neanche sicuro che inizializzare un vettore fuori dal main sia corretto ma compilando con g++ non ha dato problemi.
Ulteriori consigli per debuggare:
il parametro di compilazione -fsanitize=address,undefined abbinato a -g dà ulteriori informazioni riguardo alla causa e al momento nel quale si verifica l’errore, se no anche utilizzare il debugger di vscode è molto comodo.

1 Mi Piace

ho sistemato un po’ il codice e ora mi compila i 10 casi abbastanza velocemente. L’unica cosa è che per questa impostazione editor.maxTokenizationLineLength vsc non mi mostra i caratteri delle risposte. Sapresti a quanto dovrei impostarla?

L’impostazione editor.maxTokenizationLineLength non dovrebbe influenzare se vscode ti fa vedere il file ma solamente se prova ad interpretarlo e fornirti suggerimenti di completamento. Per file con righe molto lunghe potrebbe andarti a capo automaticamente ma non è un problema.
Se proprio volessi cambiare quell’impostazione, dato che ci sono fino a 300’000 query ed ogni query stampa un carattere dovresti impostarla ad almento 300’000, non è una buona idea (ti esplode il pc).

1 Mi Piace