样例的第三个点输出“ERROR”
我的代码:
#include <bits/stdc++.h>
using namespace std;
string s;
long long n,a[2005],b[2005],w,u,v,t,r,i,c[2005];
int main()
{
while (true)
{
cin>>s;
if (s=="END") break;
if (s=="NUM")
{
scanf("%d",&w);
if (w>1000000000) b[0]=-5;
c[++t]=w;
b[++r]=-3;
}
else if (s=="POP") b[++t]=-2;
else if (s=="INV") b[++t]=-1;
else if (s=="DUP") b[++t]=1;
else if (s=="SWP") b[++t]=0;
else if (s=="ADD") b[++t]=2;
else if (s=="SUB") b[++t]=3;
else if (s=="MUL") b[++t]=4;
else if (s=="DIV") b[++t]=5;
else if (s=="MOD") b[++t]=6;
else b[0]=-5;
}
scanf("%d",&n);
while (n--)
{
scanf("%d",&w);
a[1]=w;
u=1;
v=0;
if (b[0]==-5)
{
printf("ERROR\n");
continue;
}
cout<<endl;
for (i=1;i<=t;i++)
{
switch (b[i])
{
case -3:a[++u]=c[++v];break;
case -2:u--;break;
case -1:a[u]*=-1;break;
case 1:a[++u]=a[u-1];break;
case 0:swap(a[u],a[u-1]);break;
case 2:a[--u]+=a[u+1];break;
case 3:a[--u]-=a[u+1];break;
case 4:a[--u]*=a[u+1];break;
case 5:a[--u]/=a[u+1];break;
case 6:a[--u]%=a[u+1];break;
}
if (a[u]>1000000000) a[0]=-5;
}
if (u!=1 || a[0]==-5) printf("ERROR\n");
else printf("%d\n",a[1]);
cout<<endl;
}
return 0;
}