D 题通过92%,de不出bug

请问这个代码哪里有问题呢

#include <bits/stdc++.h>
using namespace std;
const int N = 1e5+5;
typedef long long ll;
//const int MOD=1000000007;
void get() {

	string s;
	cin>>s;
	ll len=s.size();
	vector<ll>pre(len+1,0),lat(len+1,0),d(len+1,0);
	ll cnt=0;
	for(int i=0;i<len;i++){

		pre[i]=cnt;
		if(s[i]=='u')cnt++;
	}
	
	cnt=0;
	for(int i=len-1;i>=0;i--){

		lat[i]=cnt;
		if(s[i]=='u')cnt++;
	}
	for(int i=0;i<len;i++){

		if(s[i]=='d'){
			d[i]=pre[i]*lat[i];
			//cout<<i<<' '<<d[i]<<endl;
		}
	}
	vector<ll> pre_ud(len,0),lat_du(len,0),u(len,0);
	for(int i=1;i<len;i++){

		pre_ud[i]=pre_ud[i-1];
		if(s[i]=='d')pre_ud[i]+=pre[i];
	}
	for(int i=len-2;i>=0;i--){

		lat_du[i]=lat_du[i+1];
		if(s[i]=='d')lat_du[i]+=lat[i];
	}
	for(int i=0;i<len;i++){
	
		if(s[i]=='u'){
			u[i]=pre_ud[i]+lat_du[i];
			//cout<<i<<' '<<u[i]<<endl;
		}
	}
	int pos=0,Max=0;
	for(int i=0;i<len;i++){

		if(s[i]=='u'&&u[i]>=Max) pos=i,Max=u[i];
		if(s[i]=='d'&&d[i]>=Max) pos=i,Max=d[i];
	}
    if(Max)s[pos]='a';
	cout<<s<<endl;
}

int main() {

    ios::sync_with_stdio(0);
    cin.tie(0);
	int T=1; 
	//cin>>T;
	while(T--) get();
	return 0;
}

全部评论
Max爆int了
1 回复 分享
发布于 2023-02-03 20:35 湖南
你应该在某个地方是爆int。我拿你的代码加上#define int long long可以过
点赞 回复 分享
发布于 2023-02-04 02:15 北京
Max改成ll试试?
点赞 回复 分享
发布于 2023-02-03 20:40 浙江

相关推荐

评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务