我的编译器绝对没有侵权,是我赛时自己打的。用法:在运行直接把 n 的值先写好(后台的一个正整数),然后运行,直接粘入指令即可计算出结果。
#include <bits/stdc++.h>
using namespace std;
#define il inline
#define re register
#define endl '\n'
const int Maxn=3001;
const int maxn=1001;
int n=5,p[maxn],t;
string op[maxn],flag;
int x[maxn],y[maxn],l[maxn];
signed main()
{
// freopen(".in","r",stdin);
// freopen(".out","w",stdout);
ios::sync_with_stdio(false);
cin.tie(0);
cout.tie(0);
p[1]=n;
cin>>t;
for(int i=1;i<=t;i++)
{
cin>>op[i];
if(op[i]=="new"||op[i]=="dec")
{
cin>>x[i];
}
else if(op[i]=="assign")
{
cin>>x[i]>>y[i];
}
else if(op[i]=="iftry")
{
cin>>x[i];
cin>>flag;
cin>>l[i];
}
else if(op[i]=="ifeq"||op[i]=="ifneq")
{
cin>>x[i]>>y[i]>>flag>>l[i];
}
}
for(int i=1;i<=t;i++)
{
if(op[i]=="new")
{
p[x[i]]=++n;
}
else if(op[i]=="dec")
{
p[x[i]]--;
}
else if(op[i]=="assign")
{
p[x[i]]=p[y[i]];
}
else if(op[i]=="iftry")
{
if(p[x[i]]>=0)
{
i=l[i]-1;
}
}
else if(op[i]=="ifeq")
{
if(p[x[i]]==p[y[i]])
{
i=l[i]-1;
}
}
else if(op[i]=="ifneq")
{
if(p[x[i]]!=p[y[i]])
{
i=l[i]-1;
}
}
}
cout<<n<<endl;
return 0;
}