PKU 1684 Dynamic Declaration Language (DDL)
http://poj.org/problem?id=1684
与えられたように簡易的な言語のようなものを実装する。
エラーコードの出力ミスで1WA
全く読みやすくないゴミソースになってます。
int toi(const string&in){ int ret=0; rep(i,SZ(in))ret=ret*10+in[i]-'0'; return ret; } main(){ int test; cin>>test; rep(sc,test){ cout<<sc+1<<endl; int n; cin>>n; cin.ignore(); string in[n]; rep(i,n){ string temp; getline(cin,temp); rep(j,SZ(temp))if(temp[j]!=' ')in[i]+=temp[j]; } map<int,PI> dec; rep(i,n){ const string& str=in[i]; if(str[1]=='='){ int id=str[0]; int num=toi(str.substr(2)); if(dec.count(id))dec[id]=mp(num,1); else cout<<i+1<<' '<<2<<endl; }else if(str[0]=='G'){ if(isalpha(str[4])){ int id=str[4]; int num=toi(str.substr(5)); if(dec.count(id)){ dec[id].S=1; if(dec[id].F>0)i=num-2; }else cout<<i+1<<' '<<2<<endl; }else{ int num=toi(str.substr(4)); i=num-2; } }else if(str[1]=='C'){ int id=str[3]; if(dec.count(id) && dec[id].S){ dec[id]=mp(0,0); }else if(dec.count(id)){ cout<<i+1<<' '<<1<<endl; }else dec[id]=mp(0,0); }else if(str[0]=='I'){ if(dec.count(str[3]))dec[str[3]].F++,dec[str[3]].S=1; else cout<<i+1<<' '<<2<<endl; }else if(str[0]=='E'){ break; }else if(str[0]=='D'){ if(dec.count(str[3]))dec[str[3]].F--,dec[str[3]].S=1; else cout<<i+1<<' '<<2<<endl; } } } }