36pts,求条
查看原帖
36pts,求条
1208636
lwq0220楼主2024/10/13 15:51

本人刚接触算法不久,凭感觉写的,MLE,dalao求条

#include<bits/stdc++.h>
using namespace std;
long long x;
long long work1(string str){
	int v=0;
	stringstream ss;
	ss<<str;
	ss>>v;
	return v;
}
long long ans(string str){
	long long w,i,value;
	bool cheak=false;
	for(i=0;i<str.size();i++){
		if(str[i]=='>') cheak=true;
		else if(str[i]=='<') cheak=false;
		if(str[i]=='?'){
			value=work1(str.substr(2,i-2));
			w=i;
			break;
		}
	}
	if(i==str.size()) return work1(str);
	long long suma=1,sumb=0;
	for(i=w+1;i<str.size();i++){
		if(str[i]=='?') suma++;
		else if(str[i]==':') sumb++;
		if(sumb==suma){
			if(cheak==true){
				long long va=ans(str.substr(w+1,i-w-1)),vb=ans(str.substr(i+1,str.size()-i));
				if(x>value) return va;
				else return vb;
			}
			else{
				long long va=ans(str.substr(w+1,i-w-1)),vb=ans(str.substr(i+1,str.size()-i));
				if(x<value) return va;
				else return vb;
			}
		}
	}
}
int main()
{
	long long m,q;
	string st;
	cin>>m>>q>>st;
	while(q--){
		cin>>x;
		cout<<ans(st)<<endl;
	}
}
2024/10/13 15:51
加载中...