Advertisement
Guest User

Untitled

a guest
Mar 18th, 2019
72
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.15 KB | None | 0 0
  1. #include <bits/stdc++.h>
  2.  
  3. using namespace std;
  4.  
  5. vector <long long> t,a;
  6.  
  7. void build(long v,long l,long r){
  8. if (l == r){
  9. t[v] = a[l];
  10. return;
  11. }
  12. long m = ((l + r)>>1);
  13. build((v<<1),l,m);
  14. build((v<<1)|1,m+1,r);
  15. t[v] = max(t[v<<1],t[(v<<1)|1]);
  16. }
  17.  
  18. long long Max(long v,long l,long r,long L,long R){
  19. if (L > R) return -1;
  20. if (l == L && r == R) return t[v];
  21. long m = ((l + r)>>1);
  22. return max(Max(v<<1,l,m,L,min(R,m)),Max((v<<1)|1,m+1,r,max(m+1,L),R));
  23. }
  24.  
  25. int main()
  26. {
  27. ios_base::sync_with_stdio(0);cin.tie(0);cout.tie(0);
  28. freopen("mushrooms.in","r",stdin);
  29. freopen("mushrooms.out","w",stdout);
  30. long n;
  31. cin >> n;
  32. t.resize(n*4);
  33. a.resize(n);
  34. for (long i = 0;i < n;i++){
  35. cin >> a[i];
  36. }
  37. build(1,0,n-1);
  38. long long r,R,m;
  39. cin >> m >> r >> R;
  40. long long ans = 0;
  41. while(m--){
  42. long long res = Max(1,0,n-1,r,R);
  43. ans += res;
  44. long tempr = min(R,(r*res+res*res)%n),
  45. tempR = max(R,(r*res+res*res)%n);
  46. r = tempr;
  47. R = tempR;
  48. }
  49. cout << ans << '\n';
  50. return 0;
  51. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement