C - Grand Garden

C - Grand Garden


Time Limit: 2 sec / Memory Limit: 1024 MB

Score : 300300 points

Problem Statement

In a flower bed, there are NN flowers, numbered 1,2,......,N1,2,......,N. Initially, the heights of all flowers are 00. You are given a sequence h={h1,h2,h3,......}h={h1,h2,h3,......}as input. You would like to change the height of Flower kk to hkhk for all kk (1≤k≤N)(1≤k≤N), by repeating the following "watering" operation:

  • Specify integers ll and rr. Increase the height of Flower xx by 11 for all xx such that l≤x≤rl≤x≤r.

Find the minimum number of watering operations required to satisfy the condition.

Constraints

  • 1≤N≤1001≤N≤100
  • 0≤hi≤1000≤hi≤100
  • All values in input are integers.

Input

Input is given from Standard Input in the following format:

NN
h1h1 h2h2 h3h3 ............ hNhN

Output

Print the minimum number of watering operations required to satisfy the condition.


Sample Input 1 Copy

Copy

4
1 2 2 1

Sample Output 1 Copy

Copy

2

The minimum number of watering operations required is 22. One way to achieve it is:

  • Perform the operation with (l,r)=(1,3)(l,r)=(1,3).
  • Perform the operation with (l,r)=(2,4)(l,r)=(2,4).

Sample Input 2 Copy

Copy

5
3 1 2 3 1

Sample Output 2 Copy

Copy

5

Sample Input 3 Copy

Copy

8
4 23 75 0 23 96 50 100

Sample Output 3 Copy

Copy

221

同学代码:

#include<bits/stdc++.h>
#include<algorithm>
using namespace std;
typedef long long ll;
const ll MAXN = 1e5+200;
int main(){
    ll a[MAXN] = {0};
    ll n;
    cin>>n;
    for(ll i = 0; i < n; i++){
      cin>>a[i];
    }
    ll k = a[0];
    ll sum = 0;
    for(int i= 0; i < n; i++){
      if(i == n -1){
        if(a[i] >= k){
          k = a[i];
        }
        sum+=k;
      }else{
        if(a[i] >= k){
          k = a[i];
        }else{
          sum += k - a[i];
          k = a[i];
        }
      }

    }
    cout<<sum<<endl;
    return 0;
}

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值