Cod sursa(job #1853870)

Utilizator savigunFeleaga Dragos-George savigun Data 22 ianuarie 2017 10:32:51
Problema Dtcsu Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.85 kb

#include <fstream>
#include <string.h>

using namespace std;

int n, index;
char s[100001];


int termen();
int expresie();


int termen() {
	int nr = 0;

	if (s[index] == '(') {
		return expresie();
	}

	while (s[index] >= '0' && s[index] <= '9' && index < n) {
		nr = nr * 10 + (s[index] - '0');
		index++;
	}

	return nr;
}

int expresie() {
	int val = 0;

	while (index < n && s[index] != ')') {
		char c = s[index];
		if (c == '(') {
			index++;
			val = expresie();
		}
		else if (c == 'm') {
			index++;
			val = min(val, termen());
		}
		else if (c == 'M') {
			index++;
			val = max(val, termen());
		}
		else {
			val = termen();
		}
	}

	index++;
	return val;
}


int main() {
	ifstream in("emm.in");
	ofstream out("emm.out");

	in >> s;
	n = strlen(s);

	out << expresie();

	return 0;
}