全MLE
查看原帖
全MLE
661600
stopIntferingThePoll楼主2022/9/6 21:50
#include<bits/stdc++.h>
using namespace std;
string s;
int num = 0;

void dfs(int n, int i){
	int a[100001] = {0}, new_point = 0;
	if(i == n){
		return;
	}
	if(s[i] == 'F' && s[i+1] == 'D'){
		int k = 0;
		for(int j=i; s[j]>='0'&&s[j]<='9'; j++){
			a[k] = s[j] - 48;
			k++;
	    	new_point = j;
		}
		int cheng = 1;
		for(int j=0; j<k; j++){
			num += a[j] * cheng;
			cheng *= 10;
		}
	}
	else if(s[i] == 'B' && s[i+1] == 'K'){
		int k = 0;
		for(int j=i; s[j]>='0'&&s[j]<='9'; j++){
			a[k] = s[j] - 48;
			k++;
			new_point = j;
		}
		int cheng = 1;
		for(int j=0; j<k; j++){
			num -= a[j] * cheng;
			cheng *= 10;
		}
	}
	else if(s[i] == 'R' && s[i+1] == 'E' && s[i+2] == 'P' && s[i+3] == 'E' && s[i+4] == 'A' && s[i+5] == 'T'){
		int times = 0, index = 0, k = 0;
		for(int j=i; s[j]>='0'&&s[j]<='9'; j++){
			a[k] = s[j] - 48;
			k++;
			new_point = j;
		}
		int cheng = 1;
		for(int j=0; j<k; j++){
			times += a[j] * cheng;
			cheng *= 10;
		}
		i = new_point;
		if(s[i] == 'F' && s[i+1] == 'D'){
			int k = 0;
			for(int j=i; s[j]>='0'&&s[j]<='9'; j++){
				a[k] = s[j] - 48;
				k++;
	    		new_point = j;
			}
			int cheng = 1;
			for(int j=0; j<k; j++){
				index += a[j] * cheng;
				cheng *= 10;
			}
		}
		else if(s[i] == 'B' && s[i+1] == 'K'){
			int k = 0;
			for(int j=i; s[j]>='0'&&s[j]<='9'; j++){
				a[k] = s[j] - 48;
				k++;
				new_point = j;
			}
			int cheng = 1;
			for(int j=0; j<k; j++){
				index -= a[j] * cheng;
				cheng *= 10;
			}
		}
		for(int j=0; j<times; j++){
			num += index;
		}
	}
	i = new_point;
	dfs(n, i+1);
}

int main(){
	getline(cin, s);
	int n = s.size();
	dfs(n, 0);
	cout << num;
	return 0;
}

情况

2022/9/6 21:50
加载中...