Submission #1124147

#TimeUsernameProblemLanguageResultExecution timeMemory
1124147EfeBabagilHomework (CEOI22_homework)C++20
10 / 100
1100 ms109140 KiB

#include <stdio.h>
#include <bits/stdc++.h>
using namespace std;
string s;
int cur;
vector<int> v;
struct tree
{
    char node;
    tree* left;
    tree* right;
    
};
tree* parse()
{

    if(s[cur] == '?')
    {
    cur++;
    return new tree{'?',nullptr,nullptr};
    }
    tree* l;
    tree* r;
    char n;
    n=s[cur+1];
    cur+=4;
    l = parse();
    cur++;
    r = parse();
    cur++;
    return new tree{n,l,r};
}
int dfs(tree* x)
{
    if(x->node=='?')
    {
        return v[cur++];
    }
    if(x->node=='i')
    {
        return min(dfs(x->left),dfs(x->right));
    }
    if(x->node=='a')
    {
        return max(dfs(x->left),dfs(x->right));
    }
}
int main()
{
    
    cin>>s;
	int n=(s.size()+6)/7;
	auto root=parse();
	
	vector<bool> ans(n+1);
	for(int i=0;i<n;i++)
	v.push_back(i+1);
	vector<int> temp=v;
	 do
    {
        cur=0;
        ans[dfs(root)]=1;    
    }while (next_permutation(v.begin(), v.end()));
    int tot=0;
    for(int i=1;i<n+1;i++)
    {
        if(ans[i]==1)
        tot++;
    }
    cout<<tot;
    return 0;
}

Compilation message (stderr)

Main.cpp: In function 'int dfs(tree*)':
Main.cpp:48:1: warning: control reaches end of non-void function [-Wreturn-type]
   48 | }
      | ^
#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...