Pagini recente » Stergeri | Statistici Valentin Chipuc (valentinchipuc123) | Concert | Cod sursa (job #3287940) | Cod sursa (job #2273246)
#include <bits/stdc++.h>
using namespace std;
int n, m, p;
int a[105];
int w[105];
char s[1005];
bool ok;
void eval(int &st, int &dr);
void eval2(int &st, int &dr);
void eval3(int &st, int &dr);
int main()
{
freopen("episoade.in", "r", stdin);
freopen("episoade.out", "w", stdout);
scanf("%s", s + 1);
scanf("%d%d", &n, &m);
while(n--){
for(int i = 1; i <= m ; ++i)
scanf("%d", &a[i]), w[a[i]] = i;
p = 1; ok = 1;
int st, dr;
eval(st, dr);
printf("%d\n", ok);
}
return 0;
}
void eval(int &st, int &dr){
if(!ok) return ;
vector <pair <int, int> > v;
eval2(st, dr);
v.push_back({st, dr});
while(s[p] == '#'){
int st2 = 0, dr2 = 0;
++p;
eval(st2, dr2);
if(!ok) return ;
v.push_back({st2, dr2});
}
sort(v.begin(), v.end());
st = v[0].first; dr = v[v.size() - 1].second;
for(int i = 0; i < v.size() - 1; ++i){
if(v[i].second + 1 != v[i + 1].first){
ok = 0;
return ;
}
}
}
void eval2(int &st, int &dr){
if(!ok) return ;
eval3(st, dr);
while(s[p] == '>'){
int st2 = 0, dr2 = 0;
++p;
eval3(st2, dr2);
if(!ok) return ;
if(dr + 1 != st2) {ok = 0; return ;}
dr = dr2;
}
}
void eval3(int &st, int &dr){
if(!ok) return ;
if(s[p] == '('){
++p;
eval(st, dr);
++p;
}
else if(s[p] >= '0' && s[p] <= '9'){
int x = 0;
while(s[p] >= '0' && s[p] <= '9')
x = x * 10 + s[p++] - '0';
st = dr = w[x];
}
}