92pts,WA #4求调
查看原帖
92pts,WA #4求调
678075
Spark_King楼主2024/9/1 09:28
#include<bits/stdc++.h>
using namespace std;
#define ll long long
string o,p;
struct Vary
{
	ll maxn;
	ll num[110];
}v[110];
ll cnt;
map<string,ll> name;
ll value(ll a)
{
	string x="\0";
	ll b=0;
	if(p[a]>='0'&&p[a]<='9')
	{
		for(;a<p.length();a++)
		{
			if(p[a]==']') return b;
			b*=10;
			b+=(ll)p[a]-48;
		}
	}
	for(;a<=p.length();a++)
	{
		if(p[a]=='[') 
		{
			b=value(a+1);
			if(b==-1) return b;
			break;
		}
		x+=p[a];
	}
	if(b>=v[name[x]].maxn) return -1;
	else return v[name[x]].num[b];
}
int main()
{
	ios::sync_with_stdio(0),cin.tie(0),cout.tie(0);
	while(cin>>o>>p)
	{
		if(o=="int")
		{
			string x="\0";
			ll t;
			for(ll i=0;i<p.length();i++)
			{
				if(p[i]=='[') 
				{
					t=value(i+1);
					if(t==-1) 
					{
						cout<<-1<<"\n";
						return 0;
					}
					break;
				} 
				x+=p[i];
			}
			cnt++;
			name[x]=cnt;
			v[cnt].maxn=t;
		}
		else if(o=="cout")
		{
			cout<<value(0)<<"\n";
		}
		else
		{
			swap(o,p);
			string x="\0";
			ll t,m=0;
			for(ll i=0;i<p.length();i++)
			{
				if(p[i]=='[') 
				{
					t=value(i+1);
					if(t==-1) 
					{
						cout<<-1<<"\n";
						return 0;
					}
					break;
				} 
				x+=p[i];
			}
			if(t>=v[name[x]].maxn) 
			{
				cout<<-1<<"\n";
				return 0;
			}
			if(o[0]>='0'&&o[0]<='9')
			{
				for(ll i=0;i<o.length();i++)
				{
					m*=10;
					m+=(ll)o[i]-48;
				}			
			}
			else 
			{
				swap(o,p);
				m=value(0);
				if(m==-1) 
				{
					cout<<-1<<"\n";
					return 0;
				}
			}
			v[name[x]].num[t]=m;
		}
	}
    return 0;
}
2024/9/1 09:28
加载中...