5019.3078.1969解题报告
无秒
2020-05-15 19:00:37
其实就是一个贪心。当去除1排时,我们肯定能想到去除要去的最多,那如何做呢?设有a[i],如果a[i]>a[i-1],那么去除a[i-1]时肯定会连带a[i],所以要多去除的就是a[i]-a[i-1],所以用一个for循环就欧克了。
PS:这些题都是一样的,所以一起给水了……
```cpp
#include<cstdio>
#include<iostream>
#include<cmath>
using namespace std;
int n,a[100003];
unsigned long long ans;
inline void read(int &x)
{
x=0;
int f=0;
char ch=getchar();
while(!isdigit(ch)) f|=(ch=='-'),ch=getchar();
while(isdigit(ch)) x=(x<<1)+(x<<3)+(ch^48),ch=getchar();
x=f?-x:x;
}
inline void write(int x)
{
char s[30];int top=0;
while(x) s[++top]=x%10,x/=10;
if(!top) putchar('0');
else while(top) putchar(s[top--]+'0');
}
int main()
{
read(n);
for(int i=1;i<=n;i++) read(a[i]);
a[0]=0;
for(int i=1;i<=n;i++) if(a[i]>a[i-1]) ans+=a[i]-a[i-1];
write(ans);
return 0;
}
```