| 比赛 |
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;
}