Language: C

#include<stdio.h>
#include<string.h>
#define MAX 20001

typedef struct index{
 int idx;
 int S;
}index;


void push1(int S[],int x,int *top){
 S[*top] = x;
 (*top)++;
return;
}

void push2(index S[],int idx,int s,int *top){
 S[*top].idx = idx;
 S[*top].S = s;
 (*top)++;
return;
}

int pop(int S[],int *top){
 (*top)--;
 return S[*top];
}

void Union(index S[],int *top){
 int i;

 for(i = (*top) - 1 ; i > 0 ; i--){

   if(S[i].idx < S[i-1].idx){
     (*top)--;
     S[i-1].idx = S[i].idx;
     S[i-1].S += S[i].S;
   }

 }

return;
}

int main(){
  int i, j, idx, top1 = 0, top2 = 0, sum = 0;
  char str[MAX];
  int Stack1[MAX];
  index Stack2[MAX];

 scanf("%s", str);

 for(i = 0 ; i < strlen(str) ; i++){

  switch(str[i]){
   case '\\':push1(Stack1, i, &top1);
             break;
   case '/' :if(top1 == 0)break;
             idx=pop(Stack1, &top1);
             sum += (i-idx);
             push2(Stack2, idx, i - idx, &top2);
             Union(Stack2, &top2);
             break;
  }

 }

 printf("%d\n", sum);
 if(top2 == 0) printf("%d\n", top2);
 else {
   printf("%d ", top2);
   for(i = 0 ; i < top2 - 1 ; i++) printf("%d ", Stack2[i].S);
   printf("%d\n", Stack2[top2-1].S);
 }

return 0;
}


Compiler output:
main.c:8:2: error: 'index' redeclared as different kind of symbol
    8 | }index;
      |  ^~~~~
In file included from /usr/include/string.h:462,
                 from main.c:2:
/usr/include/strings.h:68:14: note: previous declaration of 'index' with type 'char *(const char *, int)'
   68 | extern char *index (const char *__s, int __c)
      |              ^~~~~
main.c: In function 'push2':
main.c:18:9: error: request for member 'idx' in something not a structure or union
   18 |  S[*top].idx = idx;
      |         ^
main.c:19:9: error: request for member 'S' in something not a structure or union
   19 |  S[*top].S = s;
      |         ^
main.c: In function 'Union':
main.c:34:11: error: request for member 'idx' in something not a structure or union
   34 |    if(S[i].idx < S[i-1].idx){
      |           ^
main.c:34:24: error: request for member 'idx' in something not a structure or union
   34 |    if(S[i].idx < S[i-1].idx){
      |                        ^
main.c:36:12: error: request for member 'idx' in something not a structure or union
   36 |      S[i-1].idx = S[i].idx;
      |            ^
main.c:36:23: error: request for member 'idx' in something not a structure or union
   36 |      S[i-1].idx = S[i].idx;
      |                       ^
main.c:37:12: error: request for member 'S' in something not a structure or union
   37 |      S[i-1].S += S[i].S;
      |            ^
main.c:37:22: error: request for member 'S' in something not a structure or union
   37 |      S[i-1].S += S[i].S;
      |                      ^
main.c: In function 'main':
main.c:72:59: error: request for member 'S' in something not a structure or union
   72 |    for(i = 0 ; i < top2 - 1 ; i++) printf("%d ", Stack2[i].S);
      |                                                           ^
main.c:73:33: error: request for member 'S' in something not a structure or union
   73 |    printf("%d\n", Stack2[top2-1].S);
      |                                 ^