Submission #1302370

#TimeUsernameProblemLanguageResultExecution timeMemory
1302370Jawad_Akbar_JJHomework (CEOI22_homework)C++20
100 / 100
61 ms54392 KiB
#include <iostream>

using namespace std;
int N, id;
string s;
pair<int, int> get(){
	if (s[id] == '?'){
		id++, N++;
		return {1, 1};
	}

	int s1, s2;
	char c = s[id + 1];
	id += 4, s1 = N;
	
	auto [l1, r1] = get();
	id++, s1 = N - s1, s2 = N;
	
	auto [l2, r2] = get();
	id++, s2 = N - s2;

	if (c == 'i')
		return {min(l1, l2), r1 + r2 - 1};
	
	int l3 = s1 - r1 + 1, r3 = s1 - l1 + 1;
	int l4 = s2 - r2 + 1, r4 = s2 - l2 + 1;

	int L = min(l3, l4), R = r3 + r4 - 1, S = s1 + s2;
	return {S - R + 1, S - L + 1};
}

int main(){
	ios_base::sync_with_stdio(false); cin.tie(NULL);
	cin>>s;

	auto [l, r] = get();
	cout<<r - l + 1<<'\n';
}
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...