Najszybszy sposób na wczytanie tekstu z inputu do macierzy

0

Cześć,

Piszę algorytm na spoxa i niestety w większości nie spełnia on założeń czasowych.
Otóż, mam za zadanie ściągać kolejne cyfry (input) i dodawać je do tablicy.
Możliwe, że to sposób wczytywania jest zbyt wolny i psuje całą kompozycję...
Pierwsza cyfra to wielkość tablicy (ilu wymiarowa) a następne linie to już konkretne dane to tej macierzy.
Korzystam z rozwiązania SAT (summed area table) bo potem muszę policzyć podmacierze.

Robię to tak:

int b = 1;
string s;
string sFirst;
getline(cin, sFirst);

std::istringstream ss(sFirst);
std::istream_iterator<std::string> begin(ss), end;
std::vector<std::string> test(begin, end);
stringstream(test[0]) >> rozmiarTablicy;

for (int i = 0; i < rozmiarTablicy + 1; i++) {
    for (int y = 0; y < rozmiarTablicy + 1; y++) {
        cout << tab[i][y] << " ";
    }
    cout << endl;
}

int tab[rozmiarTablicy + 1][rozmiarTablicy + 1];
while (getline(cin, string)) {
    std::istringstream ss(s);
    std::istream_iterator<std::string> begin(ss), end;
    std::vector<std::string> arrayTokens(begin, end);
    for (int i = 1; i < rozmiarTablicy + 1; ++i) {
        int var;
        stringstream(arrayTokens[i - 1]) >> var;
        tab[b][i] = var + tab[b - 1][i] + tab[b][i - 1] - tab[b - 1][i - 1];
    }
    b++;
}

Chodzi o to, że na początku zczytuję jak wymiarowa jest macierz, potem robię o 1 większą o pierwszą kolumnę i wiersz uzupełniam 0 aby później łatwiej było liczyć.
Algorytm ciągnie się trochę dalej ale wydaje mi się, że jak tutaj uda się coś przyspieszyć to dam rade dalej.

Znalazłem ten sposób ponieważ elementy w linii mogą być ujemne a getChar brałbym tylko cyfry, bez znaków.

Bardzo prosiłbym o opinie, krytykę, cokolwiek, najważniejsze aby coś tutaj ugrać z czasem :)

0

A po co tak kombinować? Nie lepiej po prostu pojechać cin albo scanf? Jak bardzo Ci zależy, to googlaj za fast IO, są metody szybsze od standardowych, ale wątpię, żeby była taka potrzeba (o ile to jest typowe zadanko algorytmiczne).

1 użytkowników online, w tym zalogowanych: 0, gości: 1