现在过了
by 小越越 @ 2018-07-09 13:08:08
```cpp
#include<iostream>
#include<cstdio>
#include<cstring>
using namespace std;
const int N = 1e6+10;
int n, h[N], v[N], pre[N], w[N];
int main()
{
scanf("%d", &n);
for (int i = 1; i <= n; i++)
scanf("%d%d", &h[i], &v[i]);
memset(w, 0, sizeof(w));
pre[1] = 0;
for (int i = 2; i <= n; i++){
pre[i] = i-1;
while (h[pre[i]] < h[i] && pre[i] != 0)
pre[i] = pre[pre[i]];
if (pre[i] != 0)
w[pre[i]] += v[i];
}
pre[n] = 0;
for (int i = n-1; i >= 1; i--){
pre[i] = i+1;
while (h[pre[i]] < h[i] && pre[i] != 0)
pre[i] = pre[pre[i]];
if (pre[i] != 0)
w[pre[i]] += v[i];
}
int ans = 0;
for (int i = 1; i <= n; i++)
ans = max(ans, w[i]);
printf("%d", ans);
return 0;
}
```
您要的另一种方法
by 小越越 @ 2018-07-09 13:08:46