救救孩子,莫名全 WA
查看原帖
救救孩子,莫名全 WA
100910
⚡小林子⚡海棠喵楼主2020/8/20 12:51

RT

#include<bits/stdc++.h>
#define int long long 
using namespace std;
string s[2010];
int n,m,x; 
signed main(){
	while(getline(cin,s[++m])&&s[m]!="END");--m;
	cin>>n;
	for(int i=1;i<=n;i++){
		cin>>x;
		bool flag=1;stack<int>d;
		d.push(x);
		for(int j=1;j<=m&&flag;j++){
			switch(s[j][0]){
				case 'I':{                          //INV
					if(!d.empty()){
						int xx=d.top();d.pop();
						d.push(-xx);
					}
					else flag=0;
					break;
				}
				case 'P':{                         //POP
					if(!d.empty()) d.pop();
					else flag=0;
					break;
				}
				case 'N':{                         //NUM
					string word=s[j].substr(4,s[j].size()-4);
					int xx=0;
					stringstream sin;
					sin<<word;sin>>xx;
					d.push(xx);
					break;
				}
				case 'D':{
					if(s[j][1]=='U'){             //DUP
						if(!d.empty()) d.push(d.top());
						else flag=0;
					}
					else{                         //DIV
						if(d.size()>1){
							int xx=d.top();d.pop();
							int y=d.top();d.pop();
							if(abs(y/xx)>1000000000) flag=0;
							else d.push(y/xx);
						}
						else flag=0;
					}
					break;
				}
				case 'A':{                       //ADD
					if(d.size()>1){
						int xx=d.top();d.pop();
						int y=d.top();d.pop();
						if(abs(xx+y)>1000000000) flag=0;
						else d.push(xx+y);
					}
					else flag=0;
					break;
				}
				case 'S':{
					if(s[j][1]=='W'){          //SWP
						if(d.size()>1){
							int xx=d.top();d.pop();
							int y=d.top();d.pop();
							d.push(y);d.push(xx);
						}
						else flag=0;
					}
					else{                      //SUB
						if(d.size()>1){
							int xx=d.top();d.pop();
							int y=d.top();d.pop();
							if(abs(y-xx)>1000000000) flag=0;
							else d.push(y-xx);
						}
						else flag=0;
					}
					break;
				}
				case 'M':{
					if(s[j][1]=='O'){                   //MOD
						if(d.size()>1){
							int xx=d.top();d.pop();
							int y=d.top();d.pop();
							if(abs(y%xx)>1000000000) flag=0;
							else d.push(y%xx);
						}
						else flag=0;
					}
					else{
						if(d.size()>1){               //MUL
							int xx=d.top();d.pop();
							int y=d.top();d.pop();
							if(abs(y*xx)>1000000000) flag=0;
							else d.push(y*xx);
						}
						else flag=0;
					}
					break;
				}
			}
		}
		if(!flag||d.size()!=1) cout<<"ERROR\n";
		else cout<<d.top()<<endl;
	}
	return 0;
}
2020/8/20 12:51
加载中...