Submission #599504
Source Code Expand
#include <string>
#include <vector>
#include <map>
#include <iostream>
#include <set>
#include <list>
#include <cmath>
#include <queue>
#include <stack>
#include <cstdio>
#include <cmath>
#include <cctype>
#include <climits>
#include <complex>
#include <cstdlib>
#include <cstring>
#include <numeric>
#include <sstream>
#include <algorithm>
#include <functional>
using namespace std;
long long int A[100010];
long long int dp[100010][3];
const long long INF=1e18;
struct segtree{
long long val[400005];
int n;
void init(int n_){
n=1;
while(n<n_) n<<=1;
for(int i=0;i<2*n;++i) val[i]=-INF;
}
void set(int k,long long a){
k+=n-1;
val[k]=a;
while(k){
k=(k-1)/2;
val[k]=max(val[k*2+1],val[k*2+2]);
}
}
long long query(int a,int b,int i,int l,int r){
if(a<=l && r<=b) return val[i];
if(b<=l || r<=a) return -INF;
int md=(l+r)>>1;
return max(query(a,b,i*2+1,l,md),query(a,b,i*2+2,md,r));
}
};
segtree hill,valley;
int zip[100005];
int main(){
int N;
cin>>N;
for(int i=0;i<N;i++){
cin>>A[i];
zip[i]=A[i];
}
sort(zip,zip+N);
int zn=unique(zip,zip+N)-zip;
for(int i=0;i<N;++i) A[i]=lower_bound(zip,zip+zn,A[i])-zip;
long long ans=0;
hill.init(zn);
valley.init(zn);
for(int i=0;i<N;i++){
dp[i][0]=hill.query(A[i]+1,zn,0,0,hill.n)-zip[A[i]];//valley
dp[i][1]=valley.query(0,A[i],0,0,valley.n)+zip[A[i]];//hill
dp[i][0]=max(0ll,dp[i][0]);
dp[i][1]=max(0ll,dp[i][1]);
ans=max({ans,dp[i][0],dp[i][1]});
hill.set(A[i],dp[i][1]+zip[A[i]]);
valley.set(A[i],dp[i][0]-zip[A[i]]);
}
cout<<ans<<endl;
return 0;
}
Submission Info
| Submission Time |
|
| Task |
G - Good Sequence |
| User |
zanzibar |
| Language |
C++11 (GCC 4.9.2) |
| Score |
100 |
| Code Size |
1715 Byte |
| Status |
AC |
| Exec Time |
223 ms |
| Memory |
8360 KiB |
Judge Result
| Set Name |
Sample |
Subtask1 |
Subtask2 |
| Score / Max Score |
0 / 0 |
20 / 20 |
80 / 80 |
| Status |
|
|
|
| Set Name |
Test Cases |
| Sample |
sample-01.txt, sample-02.txt |
| Subtask1 |
sample-01.txt, sample-02.txt, 01-01.txt, 01-02.txt, 01-03.txt, 01-04.txt, 01-05.txt, 01-06.txt, 01-07.txt, 01-08.txt, 01-09.txt, 01-10.txt |
| Subtask2 |
sample-01.txt, sample-02.txt, 01-01.txt, 01-02.txt, 01-03.txt, 01-04.txt, 01-05.txt, 01-06.txt, 01-07.txt, 01-08.txt, 01-09.txt, 01-10.txt, 02-01.txt, 02-02.txt, 02-03.txt, 02-04.txt, 02-05.txt, 02-06.txt, 02-07.txt, 02-08.txt, 02-09.txt, 02-10.txt, 02-11.txt, 02-12.txt, 02-13.txt, 02-14.txt |
| Case Name |
Status |
Exec Time |
Memory |
| 01-01.txt |
AC |
24 ms |
928 KiB |
| 01-02.txt |
AC |
26 ms |
924 KiB |
| 01-03.txt |
AC |
23 ms |
920 KiB |
| 01-04.txt |
AC |
25 ms |
804 KiB |
| 01-05.txt |
AC |
27 ms |
928 KiB |
| 01-06.txt |
AC |
27 ms |
800 KiB |
| 01-07.txt |
AC |
25 ms |
800 KiB |
| 01-08.txt |
AC |
28 ms |
804 KiB |
| 01-09.txt |
AC |
27 ms |
928 KiB |
| 01-10.txt |
AC |
27 ms |
804 KiB |
| 02-01.txt |
AC |
43 ms |
1564 KiB |
| 02-02.txt |
AC |
85 ms |
4008 KiB |
| 02-03.txt |
AC |
191 ms |
7768 KiB |
| 02-04.txt |
AC |
223 ms |
8348 KiB |
| 02-05.txt |
AC |
223 ms |
8356 KiB |
| 02-06.txt |
AC |
219 ms |
8356 KiB |
| 02-07.txt |
AC |
221 ms |
8352 KiB |
| 02-08.txt |
AC |
218 ms |
8352 KiB |
| 02-09.txt |
AC |
221 ms |
8360 KiB |
| 02-10.txt |
AC |
158 ms |
8292 KiB |
| 02-11.txt |
AC |
182 ms |
8360 KiB |
| 02-12.txt |
AC |
108 ms |
4252 KiB |
| 02-13.txt |
AC |
89 ms |
4256 KiB |
| 02-14.txt |
AC |
90 ms |
4268 KiB |
| sample-01.txt |
AC |
24 ms |
796 KiB |
| sample-02.txt |
AC |
24 ms |
804 KiB |