Cod sursa(job #2193465)

Utilizator AlexandruabcdeDobleaga Alexandru Alexandruabcde Data 10 aprilie 2018 11:43:02
Problema Perle Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.92 kb
#include <bits/stdc++.h>

using namespace std;

///vom citi cate bsize caractere mereu, pe care le vom stoca in stringul str
///ideea e sa citim un numar relativ mare de caractere, dar nu foarte mare, astfe incat sa nu ocupam multa memorie
///e de preferat sa alegem bsize o putere de 2 deoarece se aloca mai bine memoria
///pe caz general, bsize il aleg (1 << 16), insa daca avem mai multa memorie il putem declara si (1 << 18) sau mai mult

///pos reprezinta pozitia curenta unde ne aflam in stringul str

///pentru a verifica in timp de concurs daca am facut bine parsarea, este bine sa setam bsize un numar foarte mic,
///de exemplu (1 << 2), pentru a ne asigura ca facem bine trecerea de la un block la altul.


const int bsize = (1 << 16);
const int nmax = 1e5 + 10;

int pos;
char str[bsize];
int x;
int n;
int a[nmax];

void read(int &x) {
    x = 0;

    ///cat timp caracterul curent nu e cifra avansam
    while (!isdigit(str[pos])) {
        pos++;
        if (pos == bsize) {
            fread(str, 1, bsize, stdin);
            pos = 0;
        }
    }

    ///cat timp caracterul curent este cifra avansam, si stocam numarul
    while (isdigit(str[pos])) {
        x = x * 10 + (str[pos] - '0');

        pos++;
        if (pos == bsize) {
            fread(str, 1, bsize, stdin);
            pos = 0;
        }
    }

    ///in ambele cazuri, daca se intampla sa ajungem la finalul stringului str, citim altul
}

int main()
{
    freopen("perle.in","r",stdin);
    freopen("perle.out","w",stdout);
    ios_base :: sync_with_stdio(false);
    ///aici citim initial un block de bsize caractere
    fread(str, 1, bsize, stdin);
    pos = 0;

    read(n);
    for (int i = 1; i <= n; ++i) {
        read(a[i]);
        for (int j = 1; j <= a[i]; j++)
            read(x);
    }

    int s = 0;
    for (int i = 1; i <= n; ++i)
        s += a[i];

    cout << s;

    return 0;
}