比赛 20251019新安模拟赛1 评测结果 AAWWWWWWWW
题目名称 铺设道路 最终得分 20
用户昵称 29 运行时间 0.111 s
代码语言 C++ 内存使用 3.84 MiB
提交时间 2025-10-19 10:12:04
显示代码纯文本
#include<bits/stdc++.h>
using namespace std;
const int N=1e6+2;
long long n,d[N]={0},ans=0,cnt=0;
int th(int s,int t){
	long long m=N;
	for(int i=s;i<=t;i++) m=min(m,d[i]);
	for(int i=s;i<=t;i++) d[i]-=m;
	ans+=m;
	//cout<<m<<endl;
	cnt++;
	return 0;
}
void cl(int f){
	if(f==n) f=1;
	if(cnt==n) return;
	int s=1;
	for(int i=f;i<=n;i++) if(d[i]!=0){
		s=i;
		break;	
	} 
		
	int t=s;
	for(int i=s;i<=n;i++) if(d[i+1]==0){
		t=i;
		break;		
	}	
	//cout<<"cl:"<<s<<" "<<t<<endl;
	th(s,t);
	//for(int j=1;j<=n;j++) cout<<d[j]<<" ";
	cl(t);	
}
int main(){
	freopen("2018road.in","r",stdin);
	freopen("2018road.out","w",stdout);
	cin>>n;
	for(int i=1;i<=n;i++) cin>>d[i];
	cl(0);
	cout<<ans<<endl;
	return 0;
}