Estou com problemas pra fazer meu código passar no tempo de execução, alguem pode me ajudar a tornar o código mais rápido?
[code]/*
- File: main.cpp
- Author: David
- Created on 25 de Julho de 2010, 14:55
*/
#include <string>
using std::string;
#include <iostream>
using std::cin;
using std::cout;
using std::endl;
static string entrada, saida;
static int ponteiro = 0, iEntrada = 0;
static signed char fita[30000] = {-1};
int main()
{
void incrementaByte();
void decrementaByte();
void imprimeByte();
void leEAdiciona();
void loop(string instrucao);
void limpaFita();
void imprime10Primeiras();
void inicializaFita();
inicializaFita();
string instrucao, instLoop;
int loopStatus = -1, instancias;
cin >> instancias;
for (int i = 1; i <= instancias; i++) {
cin;
cin >> entrada;
cin >> instrucao;
cout << "Instancia " << i << endl;
for (int i = 0; i < instrucao.length(); i++) {
if (loopStatus == -1){
switch (instrucao[i]) {
case '>': ponteiro++;
break;
case '<': ponteiro--;
break;
case '+': incrementaByte();
break;
case '-': decrementaByte();
break;
case '.': imprimeByte();
break;
case ',': leEAdiciona();
break;
case '#': imprime10Primeiras();
}
}
if (instrucao[i] == ']') {
loop(instLoop);
loopStatus = -1;
instLoop.clear();
}
if (loopStatus == 1) instLoop += instrucao[i];
if (instrucao[i] == '[') loopStatus = 1;
}
cout << "\n\n";
limpaFita();
}
return 0;
}
void inicializaFita() {
for (int i = 0; i < 30000; i++) {
fita[i] = -1;
}
}
void limpaFita() {
for (int i = 0; fita[i] != -1; i++) {
fita[i] = -1;
}
}
void incrementaByte() {
if (fita[ponteiro] == -1) fita[ponteiro]++;
fita[ponteiro]++;
}
void decrementaByte() {
fita[ponteiro]–;
}
void imprime10Primeiras() {
for (int i = 0; i < 10; i++) {
cout << fita[i];
}
}
void imprimeByte() {
cout << fita[ponteiro];
}
void leEAdiciona() {
fita[ponteiro] = entrada[iEntrada++];
}
void loop(string instrucao) {
void incrementaByte();
void decrementaByte();
void imprimeByte();
void leEAdiciona();
void imprime10Primeiras();
void loop(string instrucao);
int i = 0;
do {
switch (instrucao[i]) {
case '>': ponteiro++;
break;
case '<': ponteiro--;
break;
case '+': incrementaByte();
break;
case '-': decrementaByte();
break;
case '.': imprimeByte();
break;
case ',': leEAdiciona();
break;
case '#': imprime10Primeiras();
}
i++;
if(i > instrucao.length()) i = 0;
} while (fita[ponteiro]);
}
[/code]
O problema é este http://br.spoj.pl/problems/BRAIN/