67pts求调
code:
#include<bits/stdc++.h>
using namespace std;
map<string,vector<int>>arr;
int output(string name,int i){
if(name[i]>='a'&&name[i]<='z'||name[i]>='A'&&name[i]<='Z'){
string st;
int k=0;
while(name[i]>='a'&&name[i]<='z'||name[i]>='A'&&name[i]<='Z'){
// cout<<i<<endl;
st+=name[i];
i++;
}
int pos=output(name,i+1);
// cout<<pos<<endl;
// cout<<st<<" "<<pos<<endl;
if(pos+1>=arr[st][0]){
cout<<-1;
exit(0);
}
return arr[st][pos+1];
}else{
int num=0;
while(name[i]>='0'&&name[i]<='9'){
num=num*10+name[i]-'0';
i++;
}
if(num<0){
cout<<-1;
exit(0);
}
return num;
}
}
int main() {
string type,doing;
while(cin>>type>>doing) {
if(type=="int") {
int i=0,num=0;
string name;
while(doing[i]>='A'&&doing[i]<='Z'||doing[i]>='a'&&doing[i]<='z') {
name+=doing[i++];
}
while(doing[++i]!=']') {
num=num*10+doing[i]-'0';
}
arr[name].push_back(num);
} else if(type=="cout") {
string name;
int i=0;
while(doing[i]!='['){
name+=doing[i++];
// cout<<name<<" "<<i<<endl;
}
// cout<<name<<endl;
int a=output(doing,i+1)+1;
if(a>=arr[name][0]+1){
cout<<-1;
return 0;
}
cout<<arr[name][a]<<endl;
} else {
string name;
int i=-1,num=0;
int n=doing.size();
while(++i<n){
num=num*10+doing[i]-'0';
}
i=-1;
while(type[++i]!='['){
name+=type[i];
}
int pos=output(type,i+1)+1;
if(pos>=arr[name][0]+1){
cout<<-1;
return 0;
}
arr[name][pos]=num;
}
}
}