Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <vector>
- #include<iostream>
- using namespace std;
- int main() {
- int64_t N;
- cin >> N;
- vector<int64_t> arr;
- arr.reserve(N);
- vector<int64_t> pref;
- pref.reserve(N);
- int64_t value;
- for (int64_t i = 0; i < N; ++i) {
- cin >> value;
- arr.push_back(value);
- if (i == 0) {
- pref.push_back(value);
- } else {
- pref.push_back(pref[i - 1] + value);
- }
- }
- int64_t Q, X_0;
- cin >> Q >> X_0;
- vector<int64_t> requests;
- requests.reserve(2 * Q);
- requests.push_back(X_0);
- for (int64_t i = 1; i < 2 * Q; ++i) {
- int64_t item = (11173 * requests[i - 1] + 1) % 1000000007;
- requests.push_back(item);
- }
- int64_t L_i, R_i;
- int64_t sum_ = 0;
- for (int64_t i = 0; i < Q; ++i) {
- L_i = min(requests[i * 2] % N, requests[(i * 2) + 1] % N);
- R_i = max(requests[i * 2] % N, requests[(i * 2) + 1] % N);
- if (L_i == 0) {
- sum_ += pref[R_i];
- } else {
- sum_ += pref[R_i] - pref[L_i - 1];
- }
- }
- cout << sum_ % 1000000007<<'\n';
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement