Ois_threshold (execution killed with signal 9)

Ho creato un codice che dovrebbe risolvere il problema, ma ottengo solo 40/100 perché sui testcase 006,011,023,024 e 025 mi dice "Execution killed with signal 9 (could be triggered by violating memory limits). Non mi sembra ci siano problemi di memoria non allocata, perciò non capisco dov’è l’errore. (Posto il codice oscurato per evitare spoiler)

#include <stdio.h>
int n,temp,i,j,output;
int G[101];
char S[40000000];
int main() {
    FILE * fr;
    FILE * fw;

    fr = fopen("input.txt","r");
    fw = fopen("output.txt","w");

    fscanf(fr,"%d\n",&n);
    fgets(S,n*4,fr);

    j=0;

    for(i=0;i<n;i++){
        temp=0;
    
        while(S[j]!=' '&&S[j]!='\n'){
            temp*=10;
            temp+=S[j]-48;
            j++;
        }
        j++;

        G[temp]++;
    }

    output=0;

    for(i=100;i>=0;i--){
        if(G[i]){
            output+=G[i];
        }
        fprintf(fw,"%d ",output);
    }

    fclose(fr);
    fclose(fw);

    return 0;
}

Ciao,
“Signal 9” significa che stai usando troppa memoria.

Non è necessario salvare input in un array

Hai provato a diminuire la dimensione di S? Non tutti i numeri da 1 a 100 hanno 3 cifre, comunque puoi anche non leggere tutto in un unico fgets, se lo fai più di una volta.
Comunque quell’ if(G[i]) nell’ ultimo ciclo for è proprio da te Leonà.

4 Mi Piace