为什么不开int128会寄?
查看原帖
为什么不开int128会寄?
974277
水星湖psgqwq楼主2024/8/3 01:38
#include <bits/stdc++.h>
#define int long long
using namespace std;

const int N = 2e5 + 5;
int n, q;
__int128 a[N];


signed main()
{
    ios::sync_with_stdio(false);
    cin.tie(nullptr);

    cin >> n >> q;
    for(int i = 1, x; i <= n; i++) cin >> x, a[i] = x;
    while(q--) {
        int op, l, r; cin >> op >> l >> r;
        if(op == 1) a[l] = r;
        else {
            if(r - l > 100) cout << "Too large\n";
            else {
                __int128 mn[105], mx[105];
                for(int i = 0; i <= 100; i++) mn[i] = mx[i] = 1;
                for(int i = l; i <= r; i++) {
                    mn[i-l+1] = min({mn[i-l] * a[i], mx[i-l] * a[i], a[i]});
                    mx[i-l+1] = max({mx[i-l] * a[i], mn[i-l] * a[i], a[i]});
                    if(mx[i-l+1] > (1 << 30)) {
                        cout << "Too large\n";
                        goto M;    
                    }
                }
                cout << max(1ll, (int)*max_element(mx + 1, mx + 1 + r - l + 1)) << '\n';
            }
        }
        M:;
    }

    return 0;
}
2024/8/3 01:38
加载中...