求大佬帮优化
查看原帖
求大佬帮优化
1385606
Yun_Mo_s5_013楼主2024/9/30 16:57
#include<bits/stdc++.h>
using namespace std;

int n,cnt=1,day=0,x,st,ed;
int sink[1000005];
bool bsink[1000005];

int findmax(){
	int _max=0,i=0;
	for(i;i<n;i++){
		if(sink[i]>=_max) _max=sink[i];
	}
	return _max;
}

int main(){
	cin>>n;
	for(int i=0;i<n;i++){
		cin>>sink[i];
	}
	x = findmax();
	st=0;
	ed=n;
	for(int i=0;i<x;i++){
		for(int l=0;l<n;l++){
			if(sink[st]==0) st++;
			if(sink[ed-1]==0) ed--;
			if(sink[st]!=0&&sink[ed-1]!=0) break;
		}
		for(int j=st;j<ed;j++){
			if(sink[j]==0) bsink[j]=1;	
		}
		for(int k=st;k<ed;k++){
			if(bsink[k]&&f1){
				f1=0;
				cnt++;
			} else if(!bsink[k]&&!f1){
				f1=1;
			}
			if(f1) sink[k]-=1;
		}
		day+=cnt;
		cnt=1;
	}
	cout<<day;
	return 0;
}

/AC了前八个点,T了后两个,想请大佬看看有没有办法再优化一下循环/

2024/9/30 16:57
加载中...