結果

問題 No.880 Yet Another Segment Tree Problem
コンテスト
ユーザー zelda_master
提出日時 2026-07-27 13:32:54
言語 C++14
(gcc 15.2.0 + boost 1.90.0)
コンパイル:
g++-15 -O2 -lm -std=c++14 -Wuninitialized -DONLINE_JUDGE -o a.out _filename_
実行:
./a.out
結果
TLE  
実行時間 -
コード長 1,148 bytes
記録
記録タグの例:
初AC ショートコード 純ショートコード 純主流ショートコード 最速実行時間
コンパイル時間 292 ms
コンパイル使用メモリ 74,368 KB
実行使用メモリ 5,888 KB
最終ジャッジ日時 2026-07-27 13:33:30
合計ジャッジ時間 7,576 ms
ジャッジサーバーID
(参考情報)
judge3_0 / judge2_0
このコードへのチャレンジ
(要ログイン)
ファイルパターン 結果
sample AC * 1
other AC * 10 TLE * 1 -- * 27
権限があれば一括ダウンロードができます

ソースコード

diff #
raw source code

#include <iostream>
#include <cstdio>

using namespace std;

typedef long long LL;

const int N = 100010;

int n, q, a[N];

int GCD(int x, int y) {
    return y ? GCD(y, x % y) : x;
}

int main() {
    // freopen("gcdmax.in", "r", stdin);
    // freopen("gcdmax.out", "w", stdout);

    scanf("%d%d", &n, &q);
    for (int i = 1; i <= n; ++i) scanf("%d", &a[i]);

    while (q--) {
        int op;
        scanf("%d", &op);
        if (op == 1) {
            int l, r, x;
            scanf("%d%d%d", &l, &r, &x);
            for (int i = l; i <= r; ++i) a[i] = x;
        } else if (op == 2) {
            int l, r, x;
            scanf("%d%d%d", &l, &r, &x);
            for (int i = l; i <= r; ++i) a[i] = GCD(a[i], x);
        } else if (op == 3) {
            int l, r;
            scanf("%d%d", &l, &r);
            int ma = 0;
            for (int i = l; i <= r; ++i) ma = max(ma, a[i]);
            printf("%d\n", ma);
        } else {
            int l, r;
            scanf("%d%d", &l, &r);
            LL sum = 0LL;
            for (int i = l; i <= r; ++i) sum += a[i];
            printf("%lld\n", sum);
        }
    }

    return 0;
}
0