Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <bits/stdc++.h>
- using namespace std;
- vector <long long> t,a;
- void build(long v,long l,long r){
- if (l == r){
- t[v] = a[l];
- return;
- }
- long m = ((l + r)>>1);
- build((v<<1),l,m);
- build((v<<1)|1,m+1,r);
- t[v] = max(t[v<<1],t[(v<<1)|1]);
- }
- long long Max(long v,long l,long r,long L,long R){
- if (L > R) return -1;
- if (l == L && r == R) return t[v];
- long m = ((l + r)>>1);
- return max(Max(v<<1,l,m,L,min(R,m)),Max((v<<1)|1,m+1,r,max(m+1,L),R));
- }
- int main()
- {
- ios_base::sync_with_stdio(0);cin.tie(0);cout.tie(0);
- freopen("mushrooms.in","r",stdin);
- freopen("mushrooms.out","w",stdout);
- long n;
- cin >> n;
- t.resize(n*4);
- a.resize(n);
- for (long i = 0;i < n;i++){
- cin >> a[i];
- }
- build(1,0,n-1);
- long long r,R,m;
- cin >> m >> r >> R;
- long long ans = 0;
- while(m--){
- long long res = Max(1,0,n-1,r,R);
- ans += res;
- long tempr = min(R,(r*res+res*res)%n),
- tempR = max(R,(r*res+res*res)%n);
- r = tempr;
- R = tempR;
- }
- cout << ans << '\n';
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement