All pastes #74780 Raw Edit

Anonymous

public c v1 · immutable
#74780 ·published 2006-06-29 13:09 UTC
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;}