rendered paste body#include <stdio.h>#include <string.h>char inp[100];int minlevel,maxlevel;int found = 0;int max(int x,int y){ if(x > y) return x; return y;}int process(char* x,int level){ int len = 0; int i = 0; len = strlen(x); //now the return conditions if(len <= 1) return len; //string does not hav / int slashfound = 0; for(i = 0;i < len;i++) if(x[i] == '/') { slashfound = 1; break; } if(!slashfound) { int count = 0; for(i = 0;i < len;i++) if(x[i] != '{' && x[i] != '}') count++; return count; } if(minlevel > level) minlevel = level; if(maxlevel < level) maxlevel = level; found = 1; //if the string has / then return the max of the process of numerator and denominator char nr[100]; int nrlen = 0; char de[100]; int delen = 0; int ans = 0; int top = 0; //skip the non '{' symbols for(i = 0;i < len && x[i] != '{';i++,ans++); do { if(x[i] == '{') top++; else if(x[i] == '}') top--; nr[nrlen++] = x[i++]; }while(top > 0 && i < len); if(nrlen > 1) nr[nrlen-1] = '\0'; else nr[nrlen] = '\0'; //now we hav the numerator if(x[i] == '/') { i++; do { if(x[i] == '{') top++; else if(x[i] == '}') top--; de[delen++] = x[i++]; }while(top > 0 && i < len); if(delen > 1) de[delen-1] = '\0'; else de[delen] = '\0'; int x,y; if(nrlen == 1) x = process(nr,level+1); else x = process(nr+1,level+1); if(delen == 1) y = process(de,level-1); else y = process(de+1,level-1); ans += max(x,y); ans += 2; } else ans += process(nr+1,level); ans += process(x+i,level); return ans;}int main(){ scanf("%s",inp); int ans; ans = process(inp,0); if(found) printf("%d %d",ans,(2*(1+maxlevel - minlevel))+1); else printf("%d 1",ans); return 0;}