L’ultima idea a cui avevo pensato e speravo funzionasse era di ordinare gli archi e prendere quelli che occupassero meno “spazio” (cioè con differenza assoluta tra m ed f minore possibile), era greedy ma ottengo quasi tutti output non corretti e qualche timeout.
Si funziona (e teoricamente non è migliorabile), però questo task ha un input molto grande e senza fast input temo che ti serva un’implementazione molto attenta!
Riusciresti a elencarmi la sintassi completa dell input/output (le varie istruziono per in e ou)perché solitamente uso la libreria fstream.
Grazie mille!!
int fastread()
{
int N = 0;
char C = getchar();
while(C>47 && C<58)
{
N = (N<<1) + (N<<3) + C - 48;
C = getchar();
}
return N;
}
int main()
{
freopen("input.txt","r",stdin);
freopen("output.txt","w",stdout);
int K = fastread();
cout << K;
return 0;
}
Credo di si, quando invece hai delle stringhe è sufficiente usare push_back.
Fai però attenzione al tipo di caratteri e ai controlli che devi fare, per esempio quando ti dice che sono presenti solo caratteri stampabili.
Se l’input è del tipo intero [spazio] carattere allora devi stare attento a non considerare lo spazio come il carattere che cerchi. Quello che di solito faccio è questo:
int N = readInt();
char ch = '\0';
while(ch <= ' ') ch = getchar_unlocked();