Cod sursa(job #908847)
#include<stdio.h>
char S[100010],*p=S;
long long solve();
long long imn();
long long plm();
long long imn()
{
long long r=0;
if(*p=='(')
{
++p;
r = solve();
++p;
}
else
{
while(*p>='0' && *p<='9')
{
r=r*10+(*p-'0');
++p;
}
}
return r;
}
long long plm()
{
long long r=imn();
while(*p == '*' || *p=='/')
{
switch ( *p )
{
case '*':
++p;
r*=imn();
break;
case '/':
++p;
r/=imn();
break;
}
}
return r;
}
long long solve()
{
long long r=plm();
while(*p== '+' || *p=='-')
{
switch(*p)
{
case '+':
++p;
r+=plm();
break;
case '-':
++p;
r-=plm();
break;
}
}
return r;
}
int main()
{
fgets(S,100010,fopen("evaluare.in","r"));
fprintf(fopen("evaluare.out","w"),"%lld",solve());
return 0;
}