我太菜了,都爆了
查看原帖
我太菜了,都爆了
494680
UTwithMC楼主2021/9/4 15:47
#include<cstring>
using namespace std;
int n,d[100001],ans=0,form,to;
void find(int from,int to){
	int zero[1000001]={},pointer=2;
	zero[1]=0;
	if(from==to){
		return;
	}
	for(int i=1;i<=n;i++){
		if(d[i]==0){
			zero[pointer]=i;
			pointer++;
		}
		zero[pointer]=n+2;
		for(int i=1;i<=pointer+2;i++){
			find(d[zero[i]+1],d[zero[i+1]-1]);
			for(int j=zero[i]+1;j<=zero[i+1]-1;i++){
				d[j]--;
				ans++;
			}
		}
	}
}
int main(){	
	cin>>n;
	for(int i=1;i<=n;i++){
		cin>>d[i];
	}
	find(1,n);
	cout<<ans;
	return 0;
}
2021/9/4 15:47
加载中...