AlgoEmperor @ 2018-10-22 14:53:36
只得了一半的分
#include <bits/stdc++.h>
#define MAX (10000+5)
using namespace std;
struct Array
{
int val[105],N;
}array[MAX];
struct Pir
{
int x,y;
};
string s;
int N;
map <string,int> Map;
Pir pir;
inline int change(string s)
{
int ans=0;
for (int i=0; i<s.size(); i++)
ans*=10,
ans+=s[i]-48;
return ans;
}
inline int find(string s)
{
int flag=0,l=0;
for (int i=0; i<s.size(); i++)
if (s[i]=='[')
{
flag=1;
l=i;
break;
}
if (!flag)
return change(s);
int ord=Map[s.substr(0,l+1)];
int idx=find(s.substr(l+1,s.size()-l-2));
if (idx>array[ord].N)
{
cout<<-1<<endl;
exit(0);
}
pir.x=ord; pir.y=idx;
return array[ord].val[idx];
}
int main()
{
while (cin>>s)
{
if (s=="int")
{
int l=0,r=0;
cin>>s;
for (register int i=0; i<s.size(); i++)
if (s[i]=='[') l=i;
Map[s.substr(0,l)]=++N;
array[N].N=find(s.substr(l+1,s.size()-l-2));
}
else if (s=="cout")
{
cin>>s;
cout<<find(s)<<endl;
}
else
{
find(s);
int x=pir.x;
int y=pir.y;
cin>>s;
array[x].val[y]=find(s);
}
}
}
by QingD @ 2021-10-30 11:59:30
烤骨