Cod sursa(job #1144853)

Utilizator dyanagGrigore Diana dyanag Data 17 martie 2014 17:59:19
Problema Evaluarea unei expresii Scor 0
Compilator cpp Status done
Runda Arhiva educationala Marime 0.74 kb
#include<cstdio>
#include<cstring>

FILE *f=fopen("emm.in", "r");
FILE *g=fopen("emm.out", "w");

int poz, n;
char s[100001];

int min(int a, int b){
	if(a<b)
		return a;
	return b;
}

int termen();

int expresie(){
	int rez=termen();
	while(s[poz]=='m'||s[poz]=='M'&&poz<n){
		char c=s[poz];
		++poz;
		int y=termen(), x=min(rez, y);
		if(c=='m')
			rez=x;
		else
			rez=rez+y-x;
		
	}
	return rez;
}

int termen(){
	int val=0;
	if(s[poz]=='('){
		++poz;
		val=expresie();
		++poz;
		return val;
	}
	int c=s[poz]-'0';
	while(0<=c&&c<=9&&poz<n){
		val=val*10+c;
		++poz;
		c=s[poz]-'0';
	}
	return val;
}
int main()
{
	fscanf(f, "%s", s);
	poz=0;
	n=strlen(s);
	fprintf(g, "%d", expresie());
return 0;
}