Rudro_Debnath

Untitled

Nov 7th, 2020
52
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 3.16 KB | None | 0 0
  1. /* --------------------
  2. | LOSER |
  3. | ~NOOBOSS~ |
  4. --------------------
  5. */
  6. #include <bits/stdc++.h>
  7. using namespace std;
  8. #define mxx LLONG_MAX
  9. #define mnn LLONG_MIN
  10. #define Y() cout<< "YES" <<endl
  11. #define N() cout << "NO"<<endl
  12. #define endl "\n"
  13. #define Ceil(x,y) ((x+y-1)/y)
  14. #define sz(s) (int)s.size()
  15. #define angle(x) double(x * acos(-1) / 180.0)
  16. #define max_3(a,b,c) max(a, max(b,c))
  17. #define min_3(a,b,c) min(a, min(b,c))
  18. #define gcd(a,b) __gcd(a,b)
  19. #define lcm(a,b) (a*b)/gcd(a,b)
  20. #define loser return 0
  21. #define ll long long
  22. #define PI acos(-1)
  23. #define mem(a,v) memset(a,v,sizeof(a))
  24. #define all(v) v.begin(),v.end()
  25. #define SORT(v) sort(v.begin(),v.end())
  26. #define SRV(v) sort(v.rbegin(),v.rend())
  27. #define REV(v) reverse(v.begin(),v.end())
  28. #define B begin()
  29. #define E end()
  30. #define V vector
  31. #define F first
  32. #define S second
  33. #define PSB push_back
  34. #define MP make_pair
  35. #define flash cout.flush()
  36. #define InTheNameOfGod ios::sync_with_stdio(0);cin.tie(0); cout.tie(0);
  37. constexpr ll MOD = 998244353;
  38. constexpr ll mod = 1e9 + 7;
  39. int dx[] = {0,0,1,-1};
  40. int dy[] = {1,-1,0,0};
  41. /*-----*/
  42. #define bug1(a) cerr<<a<<endl;
  43. #define bug2(a,b) cerr<<a<<" "<<b<<endl;
  44. #define bug3(a,b,c) cerr<<a<<" "<<b<<" "<<c<<endl;
  45. /*----*/
  46. const ll N=3e5+5;
  47. vector<ll> adj[N];
  48. ll power(ll n,ll p){if(p==0) return 1;if(p==1)return n;if(p%2)return power(n,p-1)*n;else{ll x=power(n,p/2);return x*x;}}
  49. ll modpow(ll a,ll b,ll m){ll ans=1;while(b){if(b&1)ans=(ans*a)%m;b/=2;a=(a*a)%m;}return ans;}
  50. ll nsum(ll num){return (num*(num+1))/2;}
  51. void edge (ll u,ll v) {adj[u].PSB(v) ;adj[v].PSB(u);}
  52. /*------------------START---------------------*/
  53. ll sufmax[N];
  54.  
  55. /*-----*/
  56. void solve(){
  57. ll n,pos1,pos2;
  58. string s;
  59. cin>>n;
  60. V<ll> a(n);
  61. for(ll i=0;i<n;i++) cin>>a[i];
  62. for(ll i=0;i<n;i++){
  63. if(a[i]>a[i+1] || i==n-1){
  64. pos1=i; break;
  65. }
  66. }
  67. for(ll i=n-1;i>=0;i--){
  68. if(a[i-1]<a[i] || i==0){
  69. pos2=i; break;
  70. }
  71. }
  72. //bug2(pos1,pos2);
  73. ll ans=a[pos1]+a[pos2];
  74. //bug2(ans,ans);
  75. sufmax[pos2]=a[pos2];
  76. for(ll i=pos2;i>=pos1;i--){
  77. if(i!=pos2) sufmax[i]=max(a[i],sufmax[i+1]);
  78. }
  79. ll mx=a[pos1],mn=mxx;
  80. for(ll i=pos1+1;i<=pos2;i++){
  81. mn=min(mn,a[i]);
  82. if(a[i]==sufmax[i]){
  83. ll bal=min(mx,sufmax[i]);
  84. ans+=abs(mx-sufmax[i]);
  85. //bug1(ans);
  86. ans+=bal-mn;
  87. mn=mxx,mx=sufmax[i];
  88. }
  89. }
  90. cout<<ans<<endl;
  91.  
  92.  
  93. }
  94. /*-----*/
  95. int main(){
  96. InTheNameOfGod
  97.  
  98. ll Test=1;
  99. //cin>>Test;
  100. while(Test--){
  101. solve();
  102. }
  103. loser;
  104. }
  105. /////// C O D I N G I S L I F E ///////
  106.  
Advertisement
Add Comment
Please, Sign In to add comment