Pagini recente » Cod sursa (job #687254) | Cod sursa (job #2652110) | Cod sursa (job #599179) | Cod sursa (job #1612194) | Cod sursa (job #2382708)
#include <bits/stdc++.h>
using namespace std;
ifstream f("eval.in");
ofstream g("eval.out");
long long i,n,val[30],S(),P(),B(),N();
char e[100010];
int main()
{
f>>n;
for(i=0;i<n;i++)
f>>val[i];
i=0;
f>>e;
g<<S();
return 0;
}
long long S()
{
long long ret=P();
while(e[i]=='+'||e[i]=='-')
{
if(e[i]=='+')
{
i++;
ret+=P();
}
else
{
i++;
ret-=P();
}
}
return ret;
}
long long P()
{
long long ret=B();
while(e[i]=='*')
{
i++;
ret*=B();
}
return ret;
}
long long B()
{
long long ret;
if(e[i]=='(')
{
i++;
ret=S();
i++;
}
else if(e[i]=='[')
{
i++;
ret=S();
ret=ret*ret;
i++;
}
else if(e[i]=='-')
{
i++;
ret=-B();
}
else if(e[i]=='+')
{
i++;
ret=B();
}
else
ret=N();
return ret;
}
long long N()
{
// cout<<e[i]<<'\n';
long long ret=val[e[i]-'a'];
i++;
return ret;
}