比赛 2026.1.3 评测结果 WWWWWWWWWW
题目名称 团子大家族 最终得分 0
用户昵称 LikableP 运行时间 0.169 s
代码语言 C++ 内存使用 2.27 MiB
提交时间 2026-01-03 11:10:18
显示代码纯文本
#include <cstdio>
#include <cctype>

template <typename T> T read() {
  T res = 0, f = 1;
  char ch = getchar();
  for (; !isdigit(ch); ch = getchar()) if (ch == '-') f = -1;
  for (; isdigit(ch); ch = getchar()) res = (res << 3) + (res << 1) + (ch ^ 48);
  return res * f;
}

void write(__int128 x, char ed = '\n') {
  if (x < 0) putchar('-'), x = -x;
  static int sta[64], top = 0;
  do {
    sta[++top] = x % 10;
    x /= 10;
  } while (x);
  while (top) {
    putchar(sta[top--] ^ 48);
  }
  putchar(ed);
}

template <typename T> void write(T x, char ed = '\n') {
  write((__int128)x, ed);
}

#include <ctime>
const int MAXN = 1e5 + 10;

int n, m;
int a[MAXN], f[MAXN];
int cnt[MAXN];

int main() {  
  #ifdef LOCAL
    freopen("!input.in", "r", stdin);
    freopen("!output.out", "w", stdout);
  #else
    freopen("seqsqrt.in", "r", stdin);
    freopen("seqsqrt.out", "w", stdout);
  #endif
  n = read<int>(), m = read<int>();
  for (int i = 1; i <= n; ++i) {
    a[i] = read<int>();
  }
  for (int i = 1; i <= n; ++i) {
    f[i] = read<int>();
    cnt[f[i]]++;
  }

  while (m--) {
    int opt = read<int>();
    if (opt == 1) {
      int l = read<int>(), r = read<int>(), x = read<int>();
      for (register int i = l; i <= r; ++i) {
        a[i] += x;
      }
    } else if (opt == 2) {
      int p = read<int>(), v = read<int>();
      cnt[f[p]]--;
      f[p] = v;
      cnt[f[p]]++;
    } else if (opt == 3) {
      int l = read<int>(), r = read<int>(), k = read<int>();
      long long ans = 0;
      for (register int i = l; i <= r; ++i) if (f[i] == k) {
        ans += a[i];
      }
      write(ans * cnt[k]);
    }
    if (clock() > 900) break;
  }

  while (m--) {
    puts("0");
  }
  return 0; 
}