#include<cstdio>
#include<cctype>
#include<cstring>
#include<cstdlib>
//vypise vnorenia
void vypis_vnorenia(FILE * test,int pocet){
for (int i = 0; i < pocet; i++){
fprintf(test," ");
}
}
int pocet_medzier_pred_prvym_pismenom(char * buf){
int c = 0;
while (c < strlen(buf)){
if (isspace(buf[c]) == 0){//nacly sme prvy nebiely
return c;
}
c++;
}
return c; //ak vrati streln(buf) znamena to ze retazec je cely biely
}
int main(){
FILE * test = stdout;
//test = fopen("test.txt", "w");
int pocet_riadkov[10];
int najvacsie_vnorenie = 0;
char buf[102]; //preto aby sme mohli testovat dlzku riadku lebo ked retazec dlzka bude 101 tak potom dam ERR_len
int vnorenie = 0;
int zvacsit = 0;
for (int i = 0; i < 10; i++){
pocet_riadkov[i] = 0;
}
while (fgets(buf, 102, stdin))
{
//tu chekujeme chyby ci nenastali
if (strlen(buf) > 100){
fprintf(test,"ERR LENGTH\n");
exit(0);
}
if (vnorenie >= 10){
fprintf(test,"ERR LEVEL\n");
exit(0);
}
if (vnorenie < 0){
fprintf(test,"ERR BRACE\n");
exit(0);
}
int pocet_blielych = pocet_medzier_pred_prvym_pismenom(buf); // pocet bielych znakov pred prvym nebielym znakom
if (pocet_blielych == strlen(buf)){
fprintf(test,"\n");
continue;//vypis bez bielych a pokracuj
}
//teraz vieme ze tam aspon jeden nebiely znak
if (buf[pocet_blielych] == '}'){
//prvy znak je uzavreta, takze znizime uroven vnorenia
vnorenie--;
}
if (vnorenie < 0){
fprintf(test, "ERR BRACE\n");
exit(0);
}
for (int i = pocet_blielych; i < strlen(buf); i++){
if (buf[i] == '{'){
zvacsit++;
}
if (i > pocet_blielych && buf[i] == '}'){
zvacsit--;
}
if (buf[i] == '/'){
if ((i + 1) < strlen(buf)){
if (buf[i + 1] == '/'){
break; // ukoncime lebo tot su uz len komenty
}
}
}
}
//teraz vypiseme medzery
vypis_vnorenia(test,vnorenie);
fprintf(test,"%s", buf + pocet_blielych);
pocet_riadkov[vnorenie]++;
if (vnorenie > najvacsie_vnorenie){
najvacsie_vnorenie = vnorenie;
}
vnorenie = vnorenie + zvacsit;
zvacsit = 0;
}
//po cykle
if (vnorenie != 0){
fprintf(test,"ERR BRACE\n");
exit(0);
}
//vypisem statistiku
for (int i = 0; i < najvacsie_vnorenie + 1; i++){
fprintf(test, "// LEVEL %d LINES %d\n", i, pocet_riadkov[i]);
}
return 0;
}