1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
#include <cstdio>
int main() {
    int n, q, l, r;
    long long x;
    scanf("%d %d", &n, &q);
    long long* results = new long long[q];
    int* sub = new int[n];
    int* mul = new int[n];
    for (int i = 0; i < n; i++) {
        scanf("%d %d", &sub[i], &mul[i]);
    }

    for (int i = 0; i < q; i++) {
        scanf("%lld %d %d", &x, &l, &r);
        for (int j = l; j < r; j++) {
            long long add = x + sub[j];
            long long mult = x * 1LL * mul[j];
            if (add > mult) {
                x = add;
            }
            else {
                x = mult;
            }
            x %= 1000000007;
        }
        results[i] = x;
    }
    for (int i = 0; i < q; i++) {
        printf("%lld\n", results[i]);
    }
    delete[] results;
    delete[] sub;
    delete[] mul;
    return 0;
}