(Mi scuso in anticipo per gli accenti, sto usando una tastiera americana)
Nonostante sia riuscito ad ottenere un programma che dia il risultato corretto, sto avendo dei problemi negli ultimi due Testcase a causa dell’errore “Execution timed out”. Ne capisco perfettamente il significato, il mio problema, e’ che non capisco come ottimizare il mio codice per ridurre da O(N^2) ad O(N). Questo e’ il codice:
#include <iostream>
#include <fstream>
#include <vector>
#include <string>
using namespace std;
int main()
{
ifstream input("input.txt");
ofstream output("output.txt");
int N;
input >> N;
string line;
int result = N;
vector <string> file;
while(getline(input, line)) {
file.push_back(line);
}
for (int i = 0; i < file.size(); i++) {
while (file[i].find("&") != string::npos) {
file[i].replace(file[i].find("&"), 5, "&");
result -= 4;
}
}
output << result;
for (auto line : file) {
output << line << "\n";
}
input.close();
output.close();
return 0;
}
avrei bisogno davvero di capire come si crea un algoritmo molto efficiente, dato che, nella maggior parte dei problemi, cio’ che mi impedisce di raggiungere un certo punteggio e’ proprio l’efficienza dell’algoritmo.
Vorrei anche aggiungere che supero il tempo limite di 0.066 e 0.099 secondi