关于上午模拟赛T2

学术版

```cpp #include <iostream> #include <cstdio> using namespace std; struct node { unsigned long long l, r; }; node stack[5000100]; int main() { //freopen("stack2.in","r",stdin); //freopen("stack2.ans","w",stdout); int m; scanf("%d", &m); int top = 0; while (m--) { int op; scanf("%d", &op); if (op == 1) { unsigned long long l ,r; scanf("%lld%lld", &l, &r); stack[++top] = {l, r}; } if (op == 2) { long long k; scanf("%lld", &k); unsigned long long sum = 0, ans = 0; while (k > sum) { sum += stack[top].r - stack[top].l + 1; ans += (stack[top].r + stack[top].l) * (stack[top].r - stack[top].l + 1) / 2; top --; } top ++; if (k == sum) { printf("%lld\n", ans); top --; continue; } else { ans -= ((stack[top].l * 2 + sum - k - 1)) * (sum - k) / 2; stack[top].r = stack[top].l + sum - k - 1; printf("%lld\n", ans); } } } return 0; } ```
by wangjunji @ 2021-09-20 13:46:03


上一页 |