提交时间:2024-09-25 21:37:44
运行 ID: 32686
#include <cstdio> #include <iostream> #include <algorithm> using namespace std; int n, q; long long s[100010]; struct node { int op, x; } ; node p[100010]; long long cal(int l, int r) { long long ans = 0; if (l == 0) return 0; for (int i = l; i <= r; i++) { if (p[i].op == 1) ans += p[i].x; else ans *= p[i].x; if (ans > 1e18) return -1; } return ans; } void solveA() { bool flag = true; for (int i = 1; i <= n; i++) if (p[i].op != 1) { flag = false; break; } if (flag) { for (int i = 1; i <= n; i++) s[i] = s[i - 1] + p[i].x; while (q--) { int l, r; cin >> l >> r; cout << s[r] - s[l - 1] << endl; } exit(0); } flag = true; for (int i = 1; i <= n; i++) if (p[i].op != 2) { flag = false; break; } if (flag) { while (q--) { int l, r; cin >> l >> r; cout << "0" << endl; } exit(0); } } int main() { cin >> n >> q; for (int i = 1; i <= n; i++) cin >> p[i].op >> p[i].x; solveA(); while (q--) { int l, r; cin >> l >> r; cout << cal(l, r) << endl; } return 0; }