Cod sursa(job #249124)

Utilizator cameleonGeorgescu Dan cameleon Data 27 ianuarie 2009 17:39:04
Problema Evaluarea unei expresii Scor 0
Compilator cpp Status done
Runda Arhiva educationala Marime 0.99 kb
#include <fstream.h>
#include <string.h>
ifstream f("emm.in");
ofstream g("emm.out");
char e[100009]; long s[100009]; char op [100009];  long int v1,v,n,i;
long numar()
{
long int x=0;
while(e[i]>='0'&&e[i]<='9'&&i<n)
{x=x*10+(e[i]-'0');  i++;}
i--;
return x;
}
long  max (long int a, long  int b)
{if(a>=b) return a;
else return b;
}
long  min (long int a,long int b)
{if (a<=b) return a;
else return b;
}
 void evaluez ()
 {
	if(op[v1]=='m')     { s[v-1]=min(s[v],s[v-1]);
					  v1--;v--;}
	else 
		if(op[v1]=='M') {s[v-1]=max(s[v],s[v-1]);
					v--;v1--;}


 }
int main ()
{
f.getline(e,10001);
n=strlen(e);
for(i=0;i<n;i++)
 switch (e[i])
	{case 'm':
	case 'M':
	case '(': v1++;
		  op[v1]=e[i];
		  break;
	case ')': while( op[v1]!='(')
		evaluez();
		v1--;
		 evaluez();
		 break;
	default: v++; s[v]=numar();
		if(v1!=0)evaluez();
   }
if(v1!=0) evaluez();
g<<s[1]<<'\n';
f.close();
g.close();
return 0;
}