結果

問題 No.3553 Good Quartet
コンテスト
ユーザー GOTKAKO
提出日時 2026-05-23 00:53:35
言語 C++17
(gcc 15.2.0 + boost 1.89.0)
コンパイル:
g++-15 -O2 -lm -std=c++17 -Wuninitialized -DONLINE_JUDGE -o a.out _filename_
実行:
./a.out
結果
WA  
実行時間 -
コード長 1,286 bytes
記録
記録タグの例:
初AC ショートコード 純ショートコード 純主流ショートコード 最速実行時間
コンパイル時間 2,212 ms
コンパイル使用メモリ 223,100 KB
実行使用メモリ 36,096 KB
最終ジャッジ日時 2026-05-23 00:53:49
合計ジャッジ時間 8,572 ms
ジャッジサーバーID
(参考情報)
judge1_1 / judge3_0
このコードへのチャレンジ
(要ログイン)
ファイルパターン 結果
sample AC * 1
other WA * 15
権限があれば一括ダウンロードができます

ソースコード

diff #
raw source code

#include <bits/stdc++.h>
using namespace std;

int main(){
    ios_base::sync_with_stdio(false);
    cin.tie(nullptr);

    int N,Q; cin >> N >> Q;
    vector<long long> A(N);
    for(auto &a : A) cin >> a;   
    //1 5 7 11, 1 11 19 29

    int answer = 0;
    map<int,tuple<int,int,int,int>> M1,M2;
    auto update = [&](int pos,int x,int v) -> void {
        if(x == 1 || x == 5 || x == 7 || x == 11){
            auto &[v1,v2,v3,v4] = M1[pos];
            answer -= v1*v2*v3*v4;
            if(x == 1) v1 += v;
            if(x == 5) v2 += v;
            if(x == 7) v3 += v;
            if(x == 11) v4 += v;
            answer += v1*v2*v3*v4;
        }
        if(x == 1 || x == 11 || x == 19 || x == 29){
            auto [v1,v2,v3,v4] = M2[pos];
            answer -= v1*v2*v3*v4;
            if(x == 1) v1 += v;
            if(x == 11) v2 += v;
            if(x == 19) v3 += v;
            if(x == 29) v4 += v;
            answer += v1*v2*v3*v4;
        }
    };
    auto change = [&](int x,int v) -> void {
        for(auto i : vector<int>{1,5,7,11,19,29}) if(x%i == 0) update(x/i,i,v);
    };
    for(auto a : A) change(a,1);
    while(Q--){
        int t,x; cin >> t >> x;
        if(t == 1) change(x,1);
        else change(x,-1);
        cout << answer << "\n";
    }
    
}
0