Messaggi - execution timed out

Ciao,

sto tentando di risolvere il problema “Messaggi” ma, nonostante non abbia ancora scritto la funzione per eliminare i “doppioni”, già su 5 testcase il correttore da Execution timed out.
Qualcuno mi sa dire come rendrere più rapida l’esecuzione del mio codice?

#include<stdio.h>
#include<stdlib.h>
#include<string.h>

int nRighe;
int nRichieste;
char mittenti[100000][100];
char destinatari[100000][100];
char utenti[100000][100];
short tipoRichiesta[100000];
char attuale[100000][100];
int att;

void eliminaDoppioni()
{
	
}

main()
{
    scanf("%d%d", &nRighe, &nRichieste);
    
    int i,j;
    
    for(i=0; i<nRighe; i++)
    {
        scanf("%s%s", mittenti[i], destinatari[i]);
    }
    
    char temp[20];
    for(i=0; i<nRichieste; i++)
    {
        scanf("%s", utenti[i]);
        scanf("%s", temp);
        if(!strcmp(temp, "INVIATI\0"))
            tipoRichiesta[i]=0;
        else
            tipoRichiesta[i]=1;
    }
        
    for(j=0; j<nRichieste; j++)
    {
        att=0;
        
        if(tipoRichiesta[j]==0)
            for(i=0; i<nRighe; i++)
            {
                if(!strcmp(mittenti[i], utenti[j]))
                {
                	strcpy(attuale[att], destinatari[i]);
                	att++;
				}
            }
		else
			for(i=0; i<nRighe; i++)
            {
                if(!strcmp(destinatari[i], utenti[j]))
                {
                	strcpy(attuale[att], mittenti[i]);
                	att++;
				}
            }
            
        eliminaDoppioni();
        printf("%d ", att);
        for(i=0; i<att; i++)
        	printf("%s ", attuale[i]);
		printf("\n");	  
    } 
}

Nella cronologia non devi cancellare i doppioni attento. Btw perché non usi le strutture dati ? Non so se nel c stanno ma varie volte ti semplificano tantissimo la vita. In questo caso ho usato vector e map e ho ottenuto 100

Al momento non sto ancora cancellando i doppioni (comunque grazie, non avevo capito bene il testo).

Purtroppo in C non esistono strutture dati predefinite e non conosco il C++…

Io ti suggerisco di iniziare a usare il c++, le struttre dati presenti sono fenomenali. Senza di esse non sarei riuscito a risolvere gran parte dei problemi che ho svolto al 100/100. Non credo che il passaggio dal c al c++ sarà cosi traumatico. Se vuoi ti posso mandare in privata la mia soluzione cosi vedi che non è cosi traumatico il c++ xD

Va bene, seguirò il tuo consiglio e se non riesco ti chiederò la soluzione.
Grazie mille

1 Mi Piace