Submission #1066981

#TimeUsernameProblemLanguageResultExecution timeMemory
1066981AndreyHomework (CEOI22_homework)C++14
100 / 100
212 ms190672 KiB
#include<bits/stdc++.h>
using namespace std;

vector<int> haha[3000001];
vector<bool> bruh(3000001);
vector<pair<int,int>> dp(3000001);

void dfs(int a) {
    if(haha[a].empty()) {
        dp[a] = {0,0};
        return;
    }
    dfs(haha[a][0]);
    dfs(haha[a][1]);
    pair<int,int> c = dp[haha[a][0]];
    pair<int,int> d = dp[haha[a][1]];
    if(bruh[a]) {
        dp[a] = {min(c.first,d.first),c.second+d.second+1};
    }
    else {
        dp[a] = {c.first+d.first+1,min(c.second,d.second)};
    }
}

int main()
{
    ios_base::sync_with_stdio(false);
    cin.tie(NULL);
    cout.tie(NULL);
    string s;
    cin >> s;
    int y = 0,br = 1,n = 0;
    vector<int> wut(1);
    while(y < s.size()) {
        if(s[y] == 'm') {
            haha[wut[wut.size()-1]].push_back(br);
            wut.push_back(br);
            if(s[y+1] == 'i') {
                bruh[br] = 1;
            }
            else {
                bruh[br] = 0;
            }
            br++;
            y+=4;
        }
        else if(s[y] == '?') {
            haha[wut[wut.size()-1]].push_back(br);
            n++;
            br++;
            y++;
        }
        else if(s[y] == ')') {
            wut.pop_back();
            y++;
        }
        else {
            y++;
        }
    }
    dfs(1);
    cout << n-dp[1].first-dp[1].second;
    return 0;
}

Compilation message (stderr)

Main.cpp: In function 'int main()':
Main.cpp:34:13: warning: comparison of integer expressions of different signedness: 'int' and 'std::__cxx11::basic_string<char>::size_type' {aka 'long unsigned int'} [-Wsign-compare]
   34 |     while(y < s.size()) {
      |           ~~^~~~~~~~~~
#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...