Run ID 作者 问题 语言 测评结果 分数 时间 内存 代码长度 提交时间
32806 林芳菲 【J】计算器 C++ 运行超时 0 1000 MS 1828 KB 1525 2024-10-01 21:31:54

Tests(0/25):


#include <cstdio> #include <iostream> #include <algorithm> using namespace std; int n, q, cnt; int a[100010]; long long s[100010]; struct node { int op, x; } ; node t[100010]; int main() { cin >> n >> q; for (int i = 1; i <= n; i++) cin >> t[i].op >> t[i].x; for (int i = 1; i <= n; i++) { s[i] = s[i - 1]; if (t[i].op == 2 && t[i].x != 1) a[++cnt] = i; if (t[i].op == 1) s[i] += t[i].x; } while (q--) { int l, r; cin >> l >> r; int p = l; long long ans = 0; bool flag = false; while (p <= r) { int pos = lower_bound(a + 1, a + cnt + 1, p) - a; if (pos > r) { pos = r; ans += s[pos] - s[p - 1]; if (t[r].op == 2) ans *= t[r].x; if (ans < 0 || ans >= 1e18) flag = true; break; } ans += s[pos] - s[p - 1]; if (t[r].op == 2) ans *= t[r].x; if (ans < 0 || ans >= 1e18) { flag = true; break; } ans *= t[pos].x; if (ans < 0 || ans >= 1e18) { flag = true; break; } p = pos + 1; } if (flag) cout << "-1" << endl; else cout << ans << endl; } return 0; }


测评信息: