91pts WA#9 求助
查看原帖
91pts WA#9 求助
1037637
Akabane_Karuma楼主2024/8/13 17:37
#include<bits/stdc++.h>
using namespace std;
string s1=" ",s2;
map<string,pair<int,vector<int> > > value;
pair<int,vector<int> > p;
vector<int> v;
int fix(string s)
{
	//cout<<"fix "<<s<<endl;
	if(s=="0")
	    return 0;
	if(48<=s[0]&&s[0]<=57)
	{
		int res=0,t=1;
		for(int i=s.size()-1;i>=0;i--)
		{
			res+=t*(s[i]-48);
			t*=10;
		}
		return res;
	}
	else
	{
		int index1=s.find('['),res3;
		string res1=s.substr(0,index1),res2=s.substr(index1+1,s.size()-index1-2);
		res3=fix(res2);
		if(res3>=value[res1].first||res3==-1)
		    return -1;
		return value[res1].second[res3];
	}
}
int main()
{
	
	while(cin>>s1)
	{
		cin>>s2;
		if(s1=="int")
		{
			int index1=s2.find('['),res3;
			string res1=s2.substr(0,index1),res2=s2.substr(index1+1,s2.size()-index1-2);
			res3=fix(res2);
			if(res3==-1)
			{
				cout<<-1<<endl;
				return 0;
			}
			p.first=res3;
			v.clear();
			for(int i=1;i<=res3;i++)
			    v.push_back(0);
			p.second=v;
			value[res1]=p;
		}
		else if(s1=="cout")
		{
			int res3=fix(s2);
			if(res3==-1)
			{
				cout<<-1<<endl;
				return 0;
			}
			cout<<res3<<endl;
		}
		else
		{
			int index1=s1.find('['),res3;
			string res1=s1.substr(0,index1),res2=s1.substr(index1+1,s1.size()-index1-2);
			res3=fix(res2);
			if(res3>=value[res1].first||res3==-1)
			{
				cout<<-1<<endl;
				return 0;
			}
			value[res1].second[res3]=fix(s2);
		}
	}
	return 0;
}
2024/8/13 17:37
加载中...