#include <bits/stdc++.h>
using namespace std;
int main()
{
std::ios_base::sync_with_stdio(false);
std::cin.tie(NULL);
const unsigned long long modulo = 1000000007;
int n, q;
cin >> n >> q;
vector<pair<int, int>> choices;
choices.reserve(n);
for (int i = 0; i < n; i++)
{
int a, b;
cin >> a >> b;
choices.push_back({a, b});
}
// solution
for (int i = 0; i < q; i++)
{
unsigned long long x;
int l, r;
cin >> x >> l >> r;
bool overflow = false;
for (int j = l; j < r; j++)
{
if (!overflow && x >= modulo)
{
overflow = true;
}
x %= modulo;
if (overflow)
{
if (choices[j].second >= 2)
{
x *= ((unsigned long long)choices[j].second);
}
else
{
x += ((unsigned long long)choices[j].first);
}
}
else
{
unsigned long long choice1 = x + ((unsigned long long)choices[j].first);
unsigned long long choice2 = x * ((unsigned long long)choices[j].second);
x = max(choice1, choice2);
}
}
cout << x % modulo << "\n";
}
return 0;
}
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 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 | #include <bits/stdc++.h> using namespace std; int main() { std::ios_base::sync_with_stdio(false); std::cin.tie(NULL); const unsigned long long modulo = 1000000007; int n, q; cin >> n >> q; vector<pair<int, int>> choices; choices.reserve(n); for (int i = 0; i < n; i++) { int a, b; cin >> a >> b; choices.push_back({a, b}); } // solution for (int i = 0; i < q; i++) { unsigned long long x; int l, r; cin >> x >> l >> r; bool overflow = false; for (int j = l; j < r; j++) { if (!overflow && x >= modulo) { overflow = true; } x %= modulo; if (overflow) { if (choices[j].second >= 2) { x *= ((unsigned long long)choices[j].second); } else { x += ((unsigned long long)choices[j].first); } } else { unsigned long long choice1 = x + ((unsigned long long)choices[j].first); unsigned long long choice2 = x * ((unsigned long long)choices[j].second); x = max(choice1, choice2); } } cout << x % modulo << "\n"; } return 0; } |
English